版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据寄存器AX操作数和结果数据的累加器。BX在DS段中数据的指针。CX串和循环操作的计数器。DXIO指针。指针寄存器SI指向DS寄存器段中的数据指针、串操作的源指针。Dl指向ES寄存器段中的数据(目标)的指针、串操作的目标指针。SP堆栈指针(在SS段中)。BP堆栈上数据指针(在SS段中)段寄存器保存16位段选择子。CS :指向代码段DS :指向数据段SS :指向堆栈段ES :指向数据段FLAGS寄存器状态标志:CF(Carry Flag) (D0)进位标志AF(Aux Carry F)(D4)辅进标志OF(Overflow F) (D11)溢出标志SF(Sign Flag) (D7)符号标志P
2、F(Parity Flag) (D2)奇偶标志ZF(Zero Flag) (D6)零标志控制标志:DF(Direction Flag)(D10)串操作的地址方向控制标志系统标志IF(Interruptenable F)(D9)中断允许标志 TF(Trace Flag)(D8)追踪标志总称符号:im立即数a累加器r通用寄存器dst目的操作数(任意寻址方式) src源操作数seg 段寄存器11. 移动指令MOV指令2交换指令 XCHG DOPD,SOPD3堆栈操作指令(l)入栈指令:PUSH DOPD(2)出栈指令:POP DOPD(3)推入通用寄存器至堆栈指令:PUSHA (4)自堆栈弹出至通用
3、寄存器:POPA 4输入输出指令(1)输入指令:IN(2)输出指令:OUT 5扩展指令(1)CWD(2)CBW21加法指令(1)ADD DOPD,SOPD(2)ADC DOPD,SOPD2减法指令(1)SUB DOPD,SOPD(2)SBB DOPD,SOPD33乘法指令(1)MUL无符号数乘法指令此指令的格式为:MUL SOPD隐含以累加器(字节乘法为AL,字乘法为AX)作为一个操作数,在指令中规定另一操作数, (两个无符号数)相乘的结果放在累加器(字节相乘结果在AX)或累加器及其延伸部分(字相乘,结果放在DX:AX)中。双倍长度的乘积,送回到AL和AH(在两个8位数相乘时),或送回到AX和
4、它的扩展部分DX(在两个字操作数相乘时)。若结果的高半部分(在字节相乘时为AH,在字相乘时为DX)不为零,则标志CF1,OF1;否则CF0,OF0。所以标志CF1,OF1表示在AH或DX中包含有结果的有效数。4本指令影响标志CF和OF,而对AF、PF、SF、ZF等未定义。5相乘时的另一操作数可以是寄存器操作数或内存操作数。如:MUL src B AXAL*srcMUL src W DX:AXAX*src若要把内存单元FIRST和SECOND这两个字节的内容相乘,乘积放在THIRD和FOURTH单元中,可以用以下程序段: MOV AL,FIRST MUL SECOND MOV THIRD,AX6
5、(2)IMUL符号数乘法指令整数乘法指令。完成两个带符号数相乘以外,其他与MUL完全类似。若结果的高半部分(对于字节相乘则为AH,对于字相乘则为DX)不是低半部分的符号扩展,即高半部分包含有结果的有效数,则标志CF1,OF1;否则CF0,OF0。IMUL src B AXAL*src(符号数)IMUL src W DX:AXAX*src(符号数)此指令的使用如表39所示。784除法指令(1)DIV把在AX和它的扩展部分(若是字节相除则在AH和AL中,若是字相除则在DX:AX中)中的无符号被除数被源操作数除;相除以后的商送至累加器(8位时送至AL,16位时送至AX);余数送至累加器的扩展部分(8
6、位时送至AH,16位时送至DX)。若除数为0,则在内部会产生一个0类型的中断。此指令执行后对标志AF、CF、OF、PF、SF和ZF的影响是未定义的。 DIV src B ALAXsrc(无符号数) AH余数 DIV src W AXDX:AXsrc(无符号数) DX余数 此指令的使用如表3-10所示。9(2) IDlV(Integer DlVision)这条指令除了完成带符号数相除以外,与DIV完全类似。在字节相除时,最大的商为+127(7FH),而最小的负数商为-127(81H);在字相除时,最大的商为+32767(7FFFH),最小的负数商为-32767(8001H)。若相除以后,商是正的
7、且超过了上述的最大值,或商是负的且小于上述的最小值,则与被0除一样,在内部产生一个类型0中断。除法操作完成以后,对标志位AF、CF、OF、PF、SF和ZF的影响是未定义的。此指令的使用如表311所示。105增量减量指令(1)INC增量这条指令完成对指定的操作数加1,然后返回此操作数。此指令主要用于在循环程序中修改地址指针和循环次数等。这条指令执行的结果影响标志位AF、OF、PF、SF和ZF,对进位标志CF没有影响。这条指令的操作数可以是在通用寄存器中,也可以在内存中。INC r W r+1一rINC src BW src+1一 src 此指令的使用如表表3-12所示。11(2)DEC减量本指令
8、对指定的操作数减1,然后把结果送回操作数。所用的操作数可以是寄存器r,也可以是内存操作数。在相减时,把操作数作为一个无符号二进制数来对待。指令执行的结果影响标志AF、OF、PF、SF和ZF,但对标志CF没有影响(即保持此指令以前的值)。指令使用举例DEC操作数DEC码举例16位寄存器DEC AX8位寄存器DEC AL存储器DEC ARRAYSI126NEG取补指令这条指令是对操作数取补,也即用零减去操作数,再把结果送回操作数。若在字节操作时对-128,或在字操作时对-32768取补,则操作数没变化,但溢出标志OF置位。此指令影响标志AF、CF、OF、PF、SF和ZF。此指令执行的结果,一般总是
9、使标志CF1;除非在操作数为零时,才使CF0。 指令使用举例:NEG操作数 NEG码实例寄存器 NEG AL 存储器NEG MULTIPLIER137CMP比较指令比较指令使用两个操作数相减进行比较,使结果反映在标志位上,但两操作数不变。指令的格式为:CMP r,src r-srcCMP a,im a-imCMP dst,r dst-rCMP dst,im dst-im累加器与立即数、任一通用寄存器或任一内存操作数相比较;任一通用寄存器与立即数、其他寄存器或任一内存操作数相比较;内存操作数与立即数或任一寄存器相比较。比较指令主要用于比较两个数之间的关系,即两者是否相等,或两个中哪一个大。14相
10、减结果为0,则两者相等, ZF标志为1两者不等,可利用标志位确定两者的大小。如:两个正数比较CMP AX,BX (执行AX-BX)若AXBX结果为正若AXBX结果为负由SF标志来确定, SF0,则AXBX; SF1,则AXBX若比较两个正数的大小,把大的数放在AX中就似乎可以用以下程序段完成: CMP AX,BX JNS NEXT XCHG AX,BXNEXT:15但能否适用于任意两个数相比较的情况呢?例:在AX和BX中有两个无符号数AXA000H,BXl050H,若用:CMP AX,BX结果为: 1010 0000 0000 0000 - 0001 0000 0101 0000 1000 1
11、111 1011 0000显然符号标志SF1,则会得出AXBX的错误结论。原因在于无符号数D15位不代表符号,而是数值215。16不能简单地用SF标志来确定两者的大小。而应该用进位、借位标志CF。显然大数减去小数,不会产生借位,CF0;而小数减去大数,就有借位CF1。可用以下程序实现: CMP AX,BX JNC NEXT XCHG AX,BX NEXT: 17两个带符号数,如何判断大小?减法的结果有可能溢出。下面分四种情况分别加以说明:若A0(A正),B0(B正)若A0(A正),B0(B负) 若A0(A负),B0(B正) 若A0(A负),BO(B负) A与B都为正数,则执行CMP指令后,若S
12、F标志0,则AB;反之A0(A正),B127,产生了溢出。因此,不能只用SF标志来判断两个数的大小,必须同时考虑是否有溢出。结果无溢出,即OF0,则SF0,AB;SF1,AB。结果有溢出,即OF1,则SE0,AB;SF1,AB。19若A0(A负),B0(B正)若A-63 ,B+127,则显然AB,且运算结果应为负。但ABA(B),在计算机中的运行结果为:A-63 1100 0001 (原码1011 1111)B127 + 1000 0001 1 0100 0010 (原码1 1011 1110)2(-190)10 (自然丢失位)结果的D70,SF标志即为0。若单独用SF标志来判断,会得出AB的
13、错误结论。出现这种情况的原因,同样是结果产生了溢出。20若A0(A负),BO(B负)。在运算过程中不会产生溢出。则可以用SF标志来判断两个数的大小。把以上4种情况概括起来,我们可以得出以下结论:无溢出: 即OF0时,若SF0,则AB;若SF1,则AB。有溢出: 即OF1时,若SF1,则AB;若SF0,则AB。AB的条件: SFOF0218086两条用于判断带符号数大小的条件指令:大于的条件转移指令为JGJNLE条件为SFOF0,且ZF0;小于的转移指令为JLJNGE条件为SFOF1。例题:BLOCK开始的内存缓冲区中,有100个16位带符号数,要找出其中的最大值,把它存放到MAX单元中。22流
14、程图为:程序段为:MOV BX,OFFSET BLOCKMOV AX,BXINC BXINC BXMOV CX,99AGAIN: CMP AX,BXJG NEXTMOV AX,BXNEXT: INC BXINC BXDEC CXJNZ AGAINMOV MAX,AXHLT23比较指令后面通常跟着一句条件转移指令,它检查比较的结果并决定程序的转向。本指令影响标志位AF、CF、OF、PF、SF和ZF。 表315 CMP指令使用举例CMP操作数CMP码举例寄存器,寄存器 CMP BX,CX寄存器,存储器CMP DH,ALPHA存储器,寄存器CMP BP+2,SI寄存器,立即数CMP BL,02H存储
15、器,立即数CMP BXBADARDI,3420H累加器,立即数CMP AL,00010000B 24343 十进制算术指令用BCD数据进行十进制算术运算。251、DAA(Decimal Adjust for Addition)在加法后进行十进制调整。这条指令能对在AL中的由两个组合的十进制数相加的结果进行校正,以得到正确的组合的十进制和。两个组合的十进制数,必须在ADD指令之后紧接着用一条DAA指令来加以校正,这样在AL中就可以得到正确的组合的十进制和。指令的校正操作如下:若(AL0FH)9或标志AF1,则:ALAL+6AF1若AL9FH或标志CF1,则:ALAL+60HCF1此指令影响标志A
16、F、CF、PF、SF、ZF,而对标志OF未定义。262DAS(Decimal Adjust for Subtraction)在减法后进行十进制调整能对在AL中的由两个组合的十进制数相减以后的结果进行校正,以得到正确的组合的十进制差。两个组合的十进制数直接相减,必须在SUB指令以后,紧接着用一条DAS指令来加以校正,这样就可以在AL中得到正确的两个组合的十进制数的差。这条指令的校正操作如下。若(ALOFH)9或标志AF1,则:ALAL-6若AL9FH或标志CF1,则:ALAL60HCF1指令执行的结果,影响标志AF、CF、PF、SF和ZF,但对标志OF未定义。273AAA(Unpacked BC
17、DASCII Adjust for Addition)在加法后进行ASCII调整对两个未组合的十进制操作数相加后的结果进行校正,产生一个未组合的十进制和。两个未组合的十进制数可以直接用ADD指令相加,在执行加法指令以后,紧接着用一条AAA指令来加以校正,则在AX中就可以得到正确的结果。所谓未组合的十进制数,就是一位十进制数,也即十进制数字的ASCII码的高4位置为0以后所形成的数码。即6为00000110,7为00000111等。28(必须有一个在AL中)的两个数相加以后,要在AX中得到正确的仍是未组合的十进制结果,就必须进行调整。因为6713,则应该在AL中为00000011,而在AH中(若
18、初始值为0)为00000001。但加法是按二进制规则进行的,在未调整前AL中的值为: 00000110+ 0000011100001101(0DH)这条指令的校正操作如下。若(AL0FH)9或标志AF1,则:ALAL+6 AHAH+1 AF1CF1 ALAL0FH对标志AF和CF有影响,而对OF、PF、SF、ZF等标志未定义。294AAS(Unpacked BCDASCII Adjust for Subtraction)在减法后进行ASCII调整把在AL中的由两个未组合的十进制数相减的结果进行校正,在AL中产生一个正确的未组合的十进制数的差。两个未组合的十进制数直接相减,在SUB后紧跟着用一条
19、AAS指令来加以校正,这样就能在AL中得到正确的两个未组合十进制数的差。这条指令的校正操作如下。若(ALOFH)9或标志AF1,则:ALAL-6AHAH-1AF1CF1ALAL0FH305AAM(Unpacked BCDASCII Adjust for Multiply)在乘法后进行ASCII调整把在AX中的两个未组合的十进制数相乘的结果进行校正,最后在AX中能得到正确的未组合的十进制数的乘积(即高位在AX中,低位在AL中)。允许两个未组合的十进制数直接相乘,必须在MUL指令之后,紧跟着一条AAM指令进行校正,最后可在AX中得到正确的两个未组合的十进制数的乘积。这条指令的校正操作为:AHAL/
20、0AH (AL被0A除的商AH)ALAL0AH (AL被0A除的余数AL)31一个未组合的十进制数是一位十进制数。当两个未组合的十进制数例如一个为600000110,一个为700000111,按二进制的规则相乘时,乘积的有效数在AL中,其值为00101010,即为用二进制表示的乘积。要在AX中得到用未组合十进制表示的乘积,则乘积的十位数值(00000100)应在AH中,AL中应为个位数值(00000010),就必须要进行校正操作上面所规定的校正操作就能得到正确的结果。此指令影响标志位PF、SF、ZF,但对标志AF、CF、OF未定义。326AAD(Unpacked BCDASCII Adjust
21、 for Division)在除法前进行调整这条指令能把在AX中的两个未组合的十进制数在两个数相除以前进行校正,这样在两个未组合的十进制数相除以后,可以得到正确的未组合的十进制结果。例如在AX中的被除数为62,按未组合的十进制数的表示为:AH AL00000110 00000010除数为8,即为00001000在相除之前必须先校正,使被除数62以二进制形式集中在AL中即应校正为: AH AL00000000 00111110再用二进制除法指令DIV相除,相除以后,以未组合十进制表示的商在AL中,而相应的余数在AH中。33所以这条指令的校正操作为:ALAH*0AH+ALAH0允许两个未组合的十进
22、制数直接相除,但要得到正确的未组合的十进制商和余数,则应在相除之前,先用一条AAD指令进行校正,然后再用一条DIV指令,则相除以后的商送至AL中,而余数送至AH中。AH和AL中的高半字节全为0。这条指令影响标志位PF、SF、ZF,而对标志AF、CF、OF的影响未定义。34 344 逻辑指令 逻辑指令在字节和字值上执行基本的与、或、异或和非逻辑操作。351AND执行按位逻辑与(1)AND对两个操作数进行按位的逻辑“与”运算,“与”以后的结果送至目的操作数。可以进行字节操作,也可以进行字操作。80 x86系列处理器把操作数扩展为32位。格式为:AND DOPD,SOPD其中目的操作数DOPD可以是
23、累加器,也可以是任一通用寄存器,也可以是内存操作数(可用所有寻址方式)。源操作数SOPD可以是立即数、寄存器,也可以是内存操作数(可用所有寻址方式)。 36例如: AND AL,9FH AND AX,BX AND SI,BP AND AX,DATA_WORD AND DX,BUFFERSI+BX AND DATA_WORD,00FFH AND BLOCKBPDI,CX例如,可以用来指定保留位一个操作数和自己相“与”,操作数不变,但可使进位标志OF清0。此指令执行以后,标志CF0,OF0;标志PF、SF、ZF反映操作的结果;对标志AF未定义。37(2)TEST本指令完成与AND指令同样的操作,结
24、果反映在标志位上,但并不送回至目标操作数。即TEST指令不改变操作数的值。这条指令通常用于检测一些条件是否满足,但又不希望改变原有的操作数的情况下。通常在这条指令后面还会加上一条条件转移指令。若要检测AL中的最低位是否为1,若为1则转移,可使用以下指令:TEST AL,01HJNZ THERETHERE:38若要检测AX中的最高位是否为1,若为1则转移可使用以下指令:TEST AX,800OHJNZ THERETHERE:又若要检测CX中的内容是否为0,若为C则转移可使用以下指令:TEST CX,OFFFFHJZ THERE 。THERE:392OR执行按位逻辑或此指令对指定的两个操作数进行逻辑“或”运算,或运算的结果送回目的操作数。8086允许对字节或字进行“或”运算。80 x86系列处理器把操作数扩展为32位。“或”运算指令使标志位CF0,OF0;“或”操作以后的结果反映在标志位PF、SF和ZF上;对标志AF未定义。格式为: OR DOPD,SOPD其中,目的操作数DOPD,可以是累加器,可以是任一通用寄存器,也可以是一个内存操作数(可用所有寻址方式)。40源操作数SOPD,可以是立即数、寄存器,也可以是内存操作数(可用所有寻址方式)。例如:OR AL,30HOR AX,0OFFHOR BX,SIOR DX,DATA_WORDOR BUF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 22024版个人理财顾问合同范本:某银行与客户理财服务合同
- 2024年设备质保服务与支持协议版
- 2024年道路清障拖车作业合同规范文本3篇
- 山洪灾害防御知识培训课件
- 2024音乐素材购买及使用权授权合同:视频素材
- 2024年零售连锁店经营承包合同范本版B版
- 《技术模板》课件
- 浙江广厦建设职业技术大学《大数据挖掘技术及其应用》2023-2024学年第一学期期末试卷
- 2024施工合同烟囱施工施工图纸设计合同3篇
- 2024年环保设施运营合同3篇
- 2024年国家公安部直属事业单位招录人民警察及工作人员696人笔试(高频重点复习提升训练)共500题附带答案详解
- 初中必背古诗文138首
- 车站调度员(技师)技能鉴定理论考试题库(含答案)
- 2024年房屋交接确认书
- 【深信服】PT1-AF认证考试复习题库(含答案)
- 反刍动物消化道排泄物原虫诊断技术规范
- 开放系统10861《理工英语(4)》期末机考真题及答案(第102套)
- 2024年国家能源集团招聘笔试参考题库含答案解析
- GB/T 43824-2024村镇供水工程技术规范
- 初中地理学法指导课
- 体检中心质控工作计划
评论
0/150
提交评论