微机原理第三章 8086指令系统之2_第1页
微机原理第三章 8086指令系统之2_第2页
微机原理第三章 8086指令系统之2_第3页
微机原理第三章 8086指令系统之2_第4页
微机原理第三章 8086指令系统之2_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 8086指令系统之2v三、逻辑运算及移位指令三、逻辑运算及移位指令 1.逻辑运算指令逻辑运算指令 取反指令取反指令 NOT OPRD 功能功能:按位取反再送回 不影响标志位。 “与与”指令指令 AND OPRD1,OPRD2 两操作数均可以是通用寄存器或存储器, 源操作数还可以是立即数。 功能功能:两操作数按位进行“与”运算,结果存入目的操作数。 对标志位影响对标志位影响:使C,O标志清零,P、S、Z反映操作结果,对A标志未定义。 AND AL,9FHAND AX,BXAND SI,BPAND DX,BUFFERSI+BX某一操作数,自己与自己相“与”,操作数不变,进位标志CF清0若使

2、某一操作数的若干位不变,则维持不变的位与1相与;若干位置0,则置0的位与0相与例; 把数字9的ASCII码转化为相应的二进制数MOV AL,39HAND AL, 0FH 测试指令测试指令 TEST OPRD1,OPRD2 功能功能:两操作数按位进行“与”运算,但结果不保留。只是用于影响标志位。 对标志位影响和与指令相同。 通常用于检测一些条件是否满足,又不改变原有操作数,后加条件转移指令 TEST AL, 01H TEST AX,8000H JNZ THERE JNZ THERE THERE: THERE: TEST CX,0FFFFH JZ THERE THERE:“或或”指令指令 OR O

3、PRD1,OPRD2 功能功能:两操作数按位进行“或”运算,结果存入目的操作数。对标志位影响对标志位影响:使C,O标志清零,P、S、Z反映操作结果,对A标志未定义。一个操作数自身相或,不改变操作数的值,但可使进位标志CF清0若使一个操作数若干位不变,则维持不变的位与0相或,置1的这些位与1相或。例:AND AL,7FH JNP NEXT OR AL,80HNEXT:“异或异或”指令指令 XOR OPRD1,OPRD2功能功能:两操作数按位进行“异或”运算,结果存入目的操作数。对标志位影响对标志位影响:使C,O标志清零,P、S、Z反映操作结果,对A标志未定义。异或指令是操作数清0的有效办法XOR

4、 AX,AXXOR SI,SI 2. 移位和循环指令 四条移位指令: 算术左移指令 SAL OPRD,CNT 逻辑左移指令 SHL OPRD,CNT 算术右移指令 SAR OPRD,CNT 逻辑右移指令 SHR OPRD,CNT操作数OPRD可以是寄存器或存储器,CNT是移位位数,可以是1或CL。其中,SAL和SHL两指令在功能上完全一样。示意如下:CF算术左移和逻辑左移指令00注意注意:当移1位时,若最高位发生变化,则OF=1,否则OF=0。对A标志未定义,其他标志反映结果特征。CFCF逻辑右移指令移位过程算术右移指令移位过程保持符号位不变10001000100010001000100010

5、001111XCF操作数1000100010001000100010001000111110在SHL/SAL指令移位1位后在SHL/SAL指令移位10位后001000100010001000111100000000000001000100010001000100010001000111X操作数(正数)CF001000100010001000100010001000111在SAR指令移位1位后11000100010001000100010001000111X操作数(负数)CF在SAR指令移位1位后11100010001000100010001000100011110001000100010001

6、000100010001111x操作数CF在SHR指令右移1位后010001000100010001000100010001111在SHR指令右移10位后000000000010001000100010001000100v四条循环指令 循环左移指令 ROL OPRD, CNT 循环右移指令 ROR OPRD,CNT CFCF操作数操作数注意注意:当循环移1位时,若最高位发生变化,则O=1,否则O=0。此指令只影响C和O标志注意注意:当循环移1位时,若最高位发生变化,则O=1,否则O=0。此指令只影响C和O标志 带进位C循环左移指令(大循环左移) RCL OPRD, CNTCF带进位C循环右移指

7、令(大循环右移) RCL OPRD, CNTCF操作数操作数注意注意:当循环移1位时,若最高位发生变化,则O=1,否则O=0。此指令只影响C和O标志注意注意:当循环移1位时,若最高位发生变化,则O=1,否则O=0。此指令只影响C和O标志移位指令的作用v用来改变数据格式,有时用来提供程序 控制功能(例如根据移位后的CF状态作JC或JNC转移,或一些专门的运算功能。注意:左移n位与乘以2n 等效,例如: 62 2 0000011010000011000同样,右移n位与除以2n 等效,如果是逻辑右移,除法是无符号的;如果是算术右移,则除法是带符号的(保持最高位不变,并做符号的扩展)应用大循环指令可以

8、实现多字节整体移位功能。例:编程实现将例:编程实现将AL中的数乘以中的数乘以10vSAL AL, 1 ; 将AL中数左移1位,得2xvMOV BL, AL; 2x保存在BL中.vMOV CL, 2 ; 移位次数送入CLvSAL AL,CL ; 2x左移2位,得8xvADD AL, BL ; 2x 加上8x,AL中为10 xv四、串操作指令 串操作指令 : 数据传送类指令每次只能传送一个数据,若要传送大批数据就需要重复编程,这样就浪费了大量的时间和空间。 为此8086提供了一组处理主存中连续存放数据串的指令,这就是串操作指令。 规定:规定: 源操作数在DS段,用SI间接寻址; 目的操作数在ES段

9、,用DI间接寻址; 两个地址指针SI和DI在每一个串操作之后会自动修改:标志位标志位D0,则作增量修改(加1或2),D=1,则作减量修改(减1或2)。 可以用重复操作前缀使串操作指令重复执行,重复的次数事先存放在CX中,每执行一次CX自动减1,直到CX=0,则停止。下面流程图总结了串操作的过程。1传送指令传送指令MOVS语句格式:语句格式: MOVSB字节串传送字节串传送 MOVSW字串传送字串传送功能:功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。即:即:(DS:SI)ES:DI。 当当DF

10、=0时,(时,(SI)和()和(DI)增量。)增量。 当当DF=1时,(时,(SI)和()和(DI)减量。)减量。格式:格式: 有重复前缀的格式:有重复前缀的格式:REP MOVSB REP MOVSW REP MOVSD功能:除完成基本传送指令的操作外,需要将传送元素功能:除完成基本传送指令的操作外,需要将传送元素个数先送个数先送CX,每传送一个元素都要自动完成每传送一个元素都要自动完成CX-1 CX操作,操作, 如果如果CX 不为不为0, 传送后续元素,直到传送后续元素,直到CX-1 0为止。为止。重复前缀指令不能单独使用,重复前缀指令不能单独使用, 它用来控制紧跟其后的字它用来控制紧跟其

11、后的字符串指令是否重复。符串指令是否重复。 MOV SI, OFFSET SOURCE MOV DI, OFFSET DEST MOV CX 100AGAIN: MOVS DEST, SOURCE DEC CX JNZ AGAINMOV SI, OFFSET SOURCEMOV DI, OFFSET DESTMOV CX, 100REP MOVS DEST, SOURCE 例:传送100个操作数2串比较指令串比较指令CMPS 语句格式:语句格式: CMPSB字节串比较字节串比较 CMPSW字串比较字串比较功能:功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个

12、字节(或字)存储单元中的数据相减,并根据相减的结果设置标志,但结果并不保存。即:即:(SI)()(DI)。)。 修改串指针,使之指向串中的下一个元素。修改串指针,使之指向串中的下一个元素。 当当DF=0时,(时,(SI)和()和(DI)增量。)增量。 当当DF=1时,(时,(SI)和()和(DI)减量。)减量。3串搜索指令串搜索指令SCASSCAS语句格式:语句格式: SCASB SCASB字节串搜索字节串搜索 SCASW SCASW字串搜索字串搜索功能功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存,即: 字

13、节操作:(字节操作:(ALAL)()(DIDI),字操作:(),字操作:(AXAX)(DIDI)。)。 修改指针使之指向串中的下一个元素。修改指针使之指向串中的下一个元素。 当当DF=0DF=0时,(时,(DIDI)增量。)增量。 当当DF=1DF=1时,(时,(DIDI)减量。)减量。4从源串中取数指令从源串中取数指令LODSLODS语句格式:语句格式: LODSB LODSB从字节串中取数从字节串中取数 LODSW LODSW从字串中取数从字串中取数功能:功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。即: 字节操作:(字节操作:(SISI)ALAL,

14、字操作:(,字操作:(SISI)AXAX。 修改指针修改指针SISI,使它指向串中的下一个元素。,使它指向串中的下一个元素。 当当DF=0DF=0时,(时,(SISI)增量。)增量。 当当DF=1DF=1时,(时,(SISI)减量)减量。5往目的串中存数指令往目的串中存数指令STOSSTOS语句格式:语句格式: STOSB STOSB往字节串中存数往字节串中存数 STOSW STOSW往字串中存数往字串中存数功能:功能:将AL或AX中的数据送入DI所指的目的串中的字节(或字)存储单元中。即: 字节操作:(字节操作:(ALAL)DIDI,字操作:(,字操作:(AXAX)DIDI。 修改指针修改指

15、针DIDI,使之指向串中的下一个元素。,使之指向串中的下一个元素。 当当DF=0DF=0时,(时,(DIDI)增量)。)增量)。 当当DF=1DF=1时,(时,(DIDI)减量。)减量。6重复前缀指令REP REPZ REPNZ(1 1)REPREP REP前缀用在MOVS、STOS 、LODS指令前。功能:功能:每执行一次串指令(CX)1,直到(CX)=0,重复执行结束。(2 2)REPZREPZ 该指令一般用在CMP、SCAS指令前。功能:功能:每执行一次串指令(CX)1,并判断ZF标志是否为0,只要(CX)=0或ZF=0,则重复执行结束。(3 3)REPNZREPNZ 该指令一般用在CM

16、PS、SCAS 指令前。功能功能:每执行一次串指令(CX)1,并判断ZF标志是否为0,只要(CX)=0或ZF=1,则重复执行结束。重复前缀重复前缀汇编格式汇编格式执行过程执行过程影响指令影响指令REPREP1)1)若若(CX)(CX)0 0,则退出,则退出, ,否则顺序执行否则顺序执行; ;2 2)CX=CX-1CX=CX-1;3 3)执行后续指令;)执行后续指令;4 4)重复()重复(1 1)- -(3 3)MOVSMOVS,STOSSTOS,LODSLODSREPE/REPE/REPZREPZ1)1)若若(CX)(CX)0 0或或ZF=0ZF=0,则退出,则退出, ,否则顺序否则顺序执行执

17、行; ;2 2)CX=CX-1CX=CX-1;3 3)执行后续指令;)执行后续指令;4 4)重复()重复(1 1)- -(3 3)CMPSCMPS,SCASSCASREPNE/REPNE/REPNZREPNZ1)1)若若(CX)(CX)0 0或或ZF=1ZF=1,则退出,则退出, ,否则顺序否则顺序执行执行; ;2 2)CX=CX-1CX=CX-1;3 3)执行后续指令;)执行后续指令;4 4)重复()重复(1 1)- -(3 3)CMPSCMPS,SCASSCAS MOV SI, OFFSET STRING1 %操作数的有效地址送到SI MOV DI, OFFSET STRING2 MOV

18、CX, COUNT %设置循环次数 CLD %清除方向标志 REPZ CMPSB JNZ UNMAT %若串不相等,在RESULT单元中置0FFH MOV AL,0 %若串相等,在RESULT单元中置0 JMP OUTPUT UNMAT: MOV AL,0FFH OUTPUT:MOV RESULT, AL HLT MOV DI, OFFSET BLOCK ;设置数据块的地址指针 MOV CX,COUNT ;设置数据块的长度 MOV AL,CHAR ;把关键字送入AL CLD ;清除方向标志位 REPNE SCASB ; JZ FOUND ;相等转入FOUND MOV DI,0 ;不相等,把0存

19、入DI JMP DONE FOUND: DEC DI ;DI的内容减1 MOV POINT,DI MOV BX, OFFSET BLOCK SUB BX,DI MOV DI,BX ;纪录存放关键字的地址 DONE: HLT 在字符串中查找是否存在关键字符。若存在,则将记录关在字符串中查找是否存在关键字符。若存在,则将记录关键字符所在地址,否则将寄存器清零。键字符所在地址,否则将寄存器清零。v程序如下:CLD;清除方向标志DFLEADI,0404H ;目标地址0404H送DIMOV CX,0080H ;共有128个字XORAX,AX;AX清零REPSTOSW;256个字节清零例:使0404H开始

20、的256个单元清零。v五、控制转移指令五、控制转移指令 1.调用和返回指令调用和返回指令 子程序(或过程)调用指令子程序(或过程)调用指令: CALL PROC 段内调用目标子程序位于现行码段; 段间调用目标子程序不在现行码段。 直接调用目标地址直接在指令中; 间接调用目标地址在由指令指定的寄存器或 内存单元中。 操作过程:用堆栈保护子程序返回地址,即CS(段间)和IP入栈保护;目标子程序地址送CS和IP。 最常用的格式:CALL NEAR(FAR) PTR 子程序名 返回指令:返回指令:RET 通常作为子程序或过程的最后一条指令。用于返回到调用这个子程序的断点处。 段内返回将堆栈顶部的一个字

21、弹回到指令指针IP中,且SP加2; 段间返回将栈顶的两个字分别弹回到IP和CS中,SP加4。注意:注意:CALL 必须与RET指令的返回类型相匹配,即,若子程序是段间返回,则CALL指令必须是段间调用的;若子程序是段内返回的,则CALL指令必须是段内调用格式。2. 无条件转移指令JMP无条件转移指令无条件转移指令 功能:无条件转移,执行指定标号处的指令。功能:无条件转移,执行指定标号处的指令。 无条件转移指令的执行结果不影响标志位无条件转移指令的执行结果不影响标志位. .用于确定转移指令及用于确定转移指令及CALL指令的转移地址。指令的转移地址。段内直接转移段内直接转移段内间接转移段内间接转移

22、段间直接转移段间直接转移段间间接转移段间间接转移 CS:IP 控制程序执行顺序控制程序执行顺序. 段内转移段内转移, 指令只修改指令只修改IP内容内容; 段间转移段间转移, 指令须修改指令须修改CS, IP内容内容.格式格式1: 1: 段内直接转移段内直接转移 JMP 标号标号 JMP SHORT 标号标号说明:段内转移(说明:段内转移(SHORTSHORT)指令偏移量为)指令偏移量为8 8位,允许转移值的范围位,允许转移值的范围为为128128+127+127。不含。不含SHORTSHORT的指令,其转移范围可覆盖整个逻辑的指令,其转移范围可覆盖整个逻辑段段. . JMP 寄存器操作数寄存器

23、操作数; (IP) (EA) JMP 内存操作数内存操作数说明:寄存器、内存单元存放的是有效地址说明:寄存器、内存单元存放的是有效地址 所谓所谓“间接间接”,是指当,是指当CPU执行指令时执行指令时, 将寄存器或内存单将寄存器或内存单元内的有效地址写入元内的有效地址写入IP或或EIP, 从而从而实现转移实现转移.格式格式2: 2: 段内间接转移段内间接转移在实模式下在实模式下, 80486, 80486一个逻辑段的体积最大为一个逻辑段的体积最大为64K64KDS:DS:POINTERPOINTERDW P11; P11, P12DW P11; P11, P12为标号地址为标号地址DW P12;

24、DW P12;CS:CS:对对DSDS初始化初始化MOV BX, OFFSET POINTERMOV BX, OFFSET POINTERJMP BX ; (IP) (EA)JMP BX ; (IP) (EA)MOV SI, OFFSET POINTER+2MOV SI, OFFSET POINTER+2JMP SI ; JMP SI ; (IP) (EA)P11: .P12: . JMP 标号标号 ; (IP) 跳转的跳转的EA (CS) 跳转的段地址跳转的段地址 说明说明: 模块化程序设计中模块化程序设计中, 从一个模块转移到另一个模块从一个模块转移到另一个模块需需 执行段间转移指令执行段

25、间转移指令, 此时段间转移标号要作两项说明此时段间转移标号要作两项说明: 在转移在转移目标模块目标模块(即被调用模块即被调用模块)中中用用PUBLIC说明为说明为“公共变量公共变量”,在本在本模块模块(即调用模块即调用模块)中用中用EXTRN说明为说明为“外部变量名外部变量名”在模块设在模块设计时,从一个模块转移到另一个模块,用段间直接转移。计时,从一个模块转移到另一个模块,用段间直接转移。格式格式3: 3: 段间直接转移段间直接转移例例, DS:ADDR DD 12345678H ; 32位转移地址位转移地址.CS: 对对DS初始化初始化JMP ADDR; 1234H CS 5678H IP

26、JMP 内存操作数内存操作数 (IP) (EA)(IP) (EA) (CS) (EA+2) (CS) (EA+2) 在实模式下,段间间接转移指令将段地址和偏移地址送给在实模式下,段间间接转移指令将段地址和偏移地址送给CS和和IP。格式格式4:4:段间间接转移段间间接转移例例, , JMP DD PTR BXSIJMP DD PTR BXSI3.条件转移指令条件转移指令(1)简单条件转移指令(2)无符号数条件转移指令(3) 有符号数条件转移指令 它们都有通用的语句格式和功能。语句格式语句格式: 标号: 操作符 短标号功能:功能:如果条件满足,则(IP)位移量IP。其中,位移量范围是127128字

27、节之间。(1)简单条件转移(2)无符号数条件转移指令【例】比较无符号数大小,将较大的数存放【例】比较无符号数大小,将较大的数存放AXAX寄存器。寄存器。CMPCMPAXAX, BX BX ;(;(AXAX)()(BXBX)JNBJNBNEXTNEXT ;若;若AX=BXAX=BX,转移到,转移到NEXTNEXTXCHGXCHGAXAX,BX BX ;若;若AXBXAX=BXAX=BX,转移到,转移到NEXTNEXTXCHGXCHGAXAX,BXBX;若;若AXBXAXBX,交换,交换NEXTNEXT:设有10个字节属性的数据存放在以2000H单元为首地址的数据缓冲器中,试编程实现找出其中的最大

28、数,并存入2100H单元。MOV BX,2000H MOV AL,BX MOV CX,10LAB:INC BX CMP AL,BX JAE LABLE MOV AL,BX ;让让AL中始终存放较大的值中始终存放较大的值LABLE: DEC CX JNZ LAB MOV BX,2100H MOV BX,AL 。4.循环控制指令循环控制指令v循环控制指令用于控制程序的循环,其控制转向的目的地址是在以当前IP内容为中心的128127的范围内,指令采用CX作为计数器,每执行一次循环,CX内容减1,直到为0,循环结束。v 8086指令系统中主要有四种循环控制语句。 (1 1)LOOPLOOP循环控制指令

29、循环控制指令 语句格式:语句格式: LOOP LOOP 标号标号功能:(功能:(CXCX)1 01 0,则程序转移(循环),且目标操作,则程序转移(循环),且目标操作数为数为IP+IP+偏移量(符号扩展到偏移量(符号扩展到1616位);否则,顺序执行。位);否则,顺序执行。说明:说明:目标地址必须在此指令的目标地址必须在此指令的127127和和128128字节的范围字节的范围之内之内 使用使用LOOPLOOP指令可代替两条指令:指令可代替两条指令: DEC CXDEC CX JNE JNE 标号标号(2 2)LOOPZLOOPZ(LOOPELOOPE)循环控制指令)循环控制指令 语句格式: L

30、OOPE 短标号 LOOPZ 短标号 功能功能:(CX)1 0且ZF=1,则程序转移(循环)到目标操作数IP偏移量(符号扩展到16位);否则,顺序执行。说明说明:目标地址必须在此指令的127和128字节的范围之内(3 3)LOOPNZLOOPNZ(LOOPNELOOPNE)循环控制指令语)循环控制指令语句格式: LOOPNE 短标号 LOOPNZ 短标号功能:功能:(CX)10且ZF=0,则程序转移(循环)到目标操作数IP偏移量(符号扩展到16位) ;否则,顺序执行。说明说明:目标地址必须在此指令的127和128字节的范围之内(4)测试测试CX的值为的值为0转移指令转移指令指令格式:JCXZ

31、oprd测试条件:若(CX)0,则转移到指定位置,即IP+偏移量(符号扩展到16位)。v注意:注意:4条循环控制指令均不影响标志位。条循环控制指令均不影响标志位。5.中断指令v分内部中断(也叫软中断)、非屏蔽中断和可屏蔽中断。中断指令是内部中断。中断操作中断操作是通过一个中断向量表实现对一段程序(中断服务程序)的间接调用。中断向量表存放在内存空间的最低端,物理地址为00000H003FFH,共1024个字节,对应256个中断类型号0255。每个类型号对应4个字节的向量,提供中断处理程序的入口地址。 有3种中断指令: (1)INT n 操作:保护3个字的断点信息即依次将标志寄存器PSW、主程序段

32、地址CS和当前程序指针IP推入堆栈保护起来,同时使TF和IF两标志清零。 中断类型号n乘以4,得到中断向量地址,把向量的第二个字送CS,第一个字送IP,于是控制转到中断服务程序。 本指令对其他标志没有影响。 (2)溢出中断指令 INTO 操作:若 INTO指令检测到O1,则启动一个类型号为4 的中断过程,即相当于执行INT 4 指令,否则顺序执行下一条指令。 该指令的中断向量地址为:4416,即10H。00010HIPCS中断向中断向量表量表00000H003FFH(3)中断返回指令 IRET 功能:是所有中断服务程序的最后一条指令。用于退出中断过程,返回到中断时的断点处。 操作:把断点处的I

33、P、CS以及状态标志依次弹出堆栈,同时相应的修改堆栈指针SP。六、处理器控制指令六、处理器控制指令v1.标志操作指令标志操作指令直接对单个标志位进行操作直接对单个标志位进行操作设进位标志STC 格式:STC 执行的操作:CF 1清除进位标志CLC 格式: CLC 执行的操作:CF 0对进位标志取反CMC格式:CMC 执行的操作:CF 取反CF清除方向标志CLD格式:CLD 执行的操作: DF 0设置方向标志STD格式:STD 执行的操作: DF 1设中断标志STI格式:STI 执行的操作: IF 1清除中断标志CLI格式:CLI 执行的操作: IF 0v2.处理器暂停指令 HLT 功能功能:使

34、CPU进入暂停工作状态。 用法:用法:常在程序中用于等待中断 在出现下列3中情况之一时,CPU脱离暂停状态: (1)在RESET线上有复位信号出现; (2)在非屏蔽中断线NMI上有请求信号; (3)在中断允许情况下(即中断标志IF1),在INTR线上有请求信号。v3.处理器脱离指令 ESC 功能功能:也叫交权指令,即处理器把控制权交给数值运算协处理器。不影响标志位。 v4.处理器等待指令 WAIT功能功能:当TEST引线无效时,使CPU进入等待状态,不进行任何操作。但可以被外部中断源所中断,中断操作完成后,仍然回到等待状态。此指令不影响标志位。v5.总线锁定指令 LOCK 功能:是指令前缀,用

35、于保证在下一条指令执行期间,CPU对总线的控制权不被其他主设备(如DMA控制器)使用。 段寄存器指令段寄存器指令格式格式: : 操作码助记符操作码助记符 REG, SRCREG, SRC功能与说明功能与说明: : 操作码助记符操作码助记符:LDS, LES, LFS, LGS, LSS, :LDS, LES, LFS, LGS, LSS, 其后两位其后两位字母表段寄存器字母表段寄存器, , 它们是隐含的目标寄存器它们是隐含的目标寄存器. .将源操作数高将源操作数高1616位送隐含的目标寄存器位送隐含的目标寄存器; ; 若源操作数是若源操作数是3232位内存操作数位内存操作数, , 则将低则将低

36、1616位送目标通用位送目标通用寄存器寄存器. .若源操作数是若源操作数是4848位内存操作数位内存操作数, , 则将低则将低3232位送目标通位送目标通用寄存器用寄存器DS: ADDR1 DF 1234567890ABHDS: ADDR1 DF 1234567890ABH ADDR2 DD 1A2B3C4DHADDR2 DD 1A2B3C4DH CS: .CS: . LES EBX, ADDR1 LES EBX, ADDR1; ES=1234H, EBX=567890ABH; ES=1234H, EBX=567890ABH LDS SI, ADDR2 LDS SI, ADDR2 ; DS=1

37、A2BH, SI=3C4DH; DS=1A2BH, SI=3C4DH格式:格式: LDS REG,SRC执行的结果:执行的结果:REG (SRC)DS (SRC+2)000200402000:00002000:0200SIDS LDS SI,0200LES(LFS,LGS,LSS)LES(LFS,LGS,LSS)指针送寄存器和指针送寄存器和ES(FS,GS,SS)ES(FS,GS,SS)指令指令格式:格式:LES REG,SRC执行的结果:执行的结果:REG (SRC)ES (SRC+2)000200402000:00002000:0200SIES LES SI,0200作业v习题:v 3.2

38、4 ,3.28 , 3.29 , 3.30算术指令的综合例子算术指令的综合例子计算计算(V-(X*Y+Z-540)/X其中其中X,Y,Z,V均为均为16位带符号位带符号数,已经分别装入数,已经分别装入X,Y,Z,V单元,要求上式的计算结单元,要求上式的计算结果的商存入果的商存入AX,余数存入余数存入DX寄存器。寄存器。程序设计考虑的问题:程序设计考虑的问题:1、带符号数的运算的指令。、带符号数的运算的指令。2、参与运算的符号的扩展问题。、参与运算的符号的扩展问题。3、寄存器的占用问题。、寄存器的占用问题。4、计算结果的进位问题。、计算结果的进位问题。5、计算的先后顺序问题。、计算的先后顺序问题。算术指令综合例子程序算术指令综合例子程序MOV AX,XMOV BX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论