下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 80x86指令系统

80x86指令系统.ppt

80x86指令系统

板兄
2010-12-29 0人阅读 举报 0 0 暂无简介

简介:本文档为《80x86指令系统ppt》,可适用于高等教育领域

二、算术运算指令二、算术运算指令/有丰富的算术运算指令而且可以处理种类型的数据如下表所示:加法指令加法指令在微处理器中没有专用的BCD码运算指令使用二进制运算指令进行BCD码数的运算然后用BCD码运算调整指令进行调整重新得到BCD码的结果。例计算两个多字节十六进制数之和:BACFHDECH=式中被加数和加数均有个字节可以编一个循环程序实现以上运算。假设已将被加数和加数分别存入从DATA和DATA开始的两个内存区且均为低位字节在前高位字节在后如图所示。要求相加所得结果仍存回以DATA为首址的内存区。程序流程图如图所示。程序如下:MOVCX设置循环次数MOVSI置位移量初值CLC清进位CF,ClearCarryFlagLOOPER:MOVALDATASI取一个加数ADCDATASIAL和一个被加数相加INCSI位移量加DECCX循环次数减JNZLOOPER加完否若没完转LOOPER继续相加HLT程序暂停Halt图例中被加数和加数在内存中的存放情况图例的程序流程图AAA指令的操作为:如果(AL)∧FH>或(AF)=则(AL)←(AL)+H(AH)←(AH)+(AF)←(CF)←(AF)(AL)←((AL)∧FH)否则(AL)←((AL)∧FH)DAA指令的操作为:如果(AL)∧FH>,(AF)=则(AL)←(AL)+H(AF)←如果(AL)>FH或(CF)=则(AL)←(AL)+H(CF)←[例]要求计算两个至今指数之和+=?。可用以下指令实现:MOVAX,H(AL)=H,(AH)=HMOVBL,H(BL)=HADDAL,BL(AL)=FHAAA(AL)=H,(AH)=H(CF)=(AF)=MOVAX,H(AL)=H,(AH)=HMOVBL,H(BL)=HADDAL,BL(AL)=FHDAA(AL)=H,(AH)=H(CF)=,(AF)=减法指令减法指令例内存数据段存放了个带符号数首地址为TAB要求将各数取绝对值后存入以TAB为首址的内存区。由于个带符号数中可能既有正数又有负数因此先要判断正负。如为正数可以原封不动地传送到另一内存区如为负数则需先求补即可得到负数的绝对值然后再传送。程序如下:LEASITAB(SI)←源地址指针LEADITAB(DI)←目标地址指针MOVCX(CX)←循环次数CHECK:MOVALSI取一个带符号数到ALORALALAL内容不变但使之影响标志JNSNEXT若(SF)=则转NEXTNEGAL否则求补NEXT:MOVDIAL传送到目标地址INCSI源地址加INCDI目标地址加DECCX循环次数减JNZCHECK如不等于零则转CHECKHLT停止AAS指令的操作为:如果(AL)∧FH>或(AF)=则(AL)←(AL)-H(AH)←(AH)-(AF)←(CF)←(AF)(AL)←((AL)∧FH)否则(AL)←((AL)∧FH)DAS指令的操作为:如果(AL)∧FH>,(AF)=则(AL)←(AL)-H(AF)←如果(AL)>FH或(CF)=则(AL)←(AL)-H(CF)←乘法指令乘法指令AL源操作数×AX源操作数×除法指令除法指令CPU执行除法时规定:除数只能是被出数的一半字长。当被除数为位时除数应为为当被除数为位时除数应为为三、逻辑类指令三、逻辑类指令逻辑运算指令逻辑运算类指令与算术运算指令不同算术指令是按字节或字进行算术运算而逻辑运算指令是把操作数按位来进行逻辑运算。“与”运算指令格式:ANDdst,src“或”运算指令格式:ORdst,src“非”运算指令格式:NOTopr“异或”运算指令格式:XORdst,src测试指令格式:TESTdst,src说明:TEST相当于AND运算但是不保存结果仅影响标志。常见的用法举例⑴清进位标志位:ANDAX,AX或ORAL,AL等⑵清零操作数:XORAX,AX不仅把AX清零而且也影响了状态标志⑶把某几位取反:用XOR指令把要取反的位和异或不变的位和异或⑷清零或置位某几位:用AND指令清零用OR指令置位移位操作指令该类指令的使用方法是:⑴移动位用类似于SHLAX,的格式⑵移动n位用类似于SHLAX,CL的格式SHL逻辑左移:操作数整体左移最高位移到CF空余低位补SHR逻辑右移:操作数整体右移最低位移到CF空余高位补SAL算术左移:和SHL指令相同SAR算术右移:操作数整体右移最低位移到CF空余高位补原符号位说明⑴逻辑移位适用于无符号数算术移位适用于有符号数。⑵逻辑左移和算术左移的机器码完全相同是助记符的两种写法。ROL循环左移:操作数整体左移最高位移到CF最低位补原最高位ROR循环右移:操作数整体右移最低位移到CF最高位补原最低位RCL带进位的循环左移:类似于ROL循环移位CF加入到循环圈中。RCR带进位的循环右移:类似于ROR循环移位CF加入到循环圈中。说明:循环移位常用来变换数据格式。MOVCL,置循环以位次数MOVAL,H(AL)=HROLAL,CL(AL)=H四、串操作指令四、串操作指令串操作指令的特征是对数据块(字符串)进行操作并且其中部分指令可以两个操作数同时是存储器操作数。MOVS(Movestring)串传送CMPS(Comparestring)串比较SCAS(Scanstring)串扫描LODS(Loadfromstring)从串中取数据STOS(Storeintostring)存数据到串中说明⑴串操作指令每次执行完成一个字节或一个字的操作。⑵通常使用重复前缀用来完成数据块的操作。重复前缀⑴REP重复⑵REPEREPZ相等为零则重复⑶REPNEREPNZ不相等不为零则重复特点⑴串操作指令需要指明每次操作的类型:B字节W字例如:MOVSB,CMPSW等。⑵串操作指令使用DS:SI作为源操作数的指针ES:DI作为目的操作数的指针⑶使用DF来表示每次操作以后变址寄存器SI和DI的变化方向CLDDF=SI,DI做增量变化B:或W:STDDF=SI,DI做减量变化B:或W:⑷使用CX来表示用重复前缀以后指令需要重复执行的次数说明⑴MOVS指令MOVSB或MOVSW以字节或字为单位在存储单元之间传送数据可以使用REP前缀⑵LODS指令LODSB或LODSW从内存中取出字节或字到累加器AL或AX可以使用REP前缀但意义不大。⑶STOS指令STOSB或STOSW从累加器中存字节或字到存储器可以使用REP前缀⑷CMPS指令CMPSB或CMPSW以字节或字为单位进行两个存储器操作数的比较可以使用REPEREPZ前缀用源操作数目的操作数⑸SCAS指令SCASB或SCASW在数据串中查找AL或AX中的内容。可以使用REPNEREPNZ前缀

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/27

80x86指令系统

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利