




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章8086指令系统指令系统教学内容教学内容 是计算机能够识别和执行的指挥计算机是计算机能够识别和执行的指挥计算机进行操作的命令。计算机是通过执行指令序列来进行操作的命令。计算机是通过执行指令序列来解决问题的。解决问题的。 是指微处理器能执行的各种是指微处理器能执行的各种指令的集合指令的集合。 指令分为:指令分为:和和:形式。形式。:采用:采用形式形式例:一条加法指令的机器码为:例:一条加法指令的机器码为: 02CFH = 000000 10 11001111, 前前6个个0,表示加法操作,为操作码字段,剩,表示加法操作,为操作码字段,剩余部分说明操作数。余部分说明操作数。 该指令的助
2、记符为:该指令的助记符为:ADD CL,BH,即实现:,即实现:CL CL + BL。操作码操作码 操作数操作数指令由两部分构成:指令由两部分构成:u操作码:操作码:用来说明该指令所要完成的操作用来说明该指令所要完成的操作。u操作数操作数:操作对象。通常指令中含有操作对象。通常指令中含有1个或个或2个个 操作数,但也有的指令不含操作数。操作数,但也有的指令不含操作数。指令的助记符格式指令的助记符格式标号:标号:指明指令所在地址。指明指令所在地址。操作数操作数1 1:被称为:被称为destdest,它不仅可以作,它不仅可以作为指令操作的一个对象,还可以用来存放指令操为指令操作的一个对象,还可以用
3、来存放指令操作的结果。作的结果。操作数操作数2 2:常被称为:常被称为srcsrc,它表示参与指,它表示参与指令操作的一个对象。令操作的一个对象。注释:注释:分号后的内容是对指令的解释。分号后的内容是对指令的解释。标号:操作码标号:操作码 操作数操作数1,操作数操作数2 ;注释注释操作数根据存放方式分为四种:操作数根据存放方式分为四种: : 直接存放在指令队列中直接存放在指令队列中AX、BX、CX、DX、BP、SP、SI、DI、DS、SS、ES、CS放置在内存中,需启动放置在内存中,需启动总线周期。总线周期。放置在放置在I/O端口中,需端口中,需启动总线周期。启动总线周期。教学内容教学内容操作
4、数的寻址方式操作数的寻址方式寻址方式:寻找操作数地址的方法。寻址方式:寻找操作数地址的方法。寻址方式的类型:寻址方式的类型:n立即数寻址方式立即数寻址方式n寄存器寻址方式寄存器寻址方式n存储器寻址方式存储器寻址方式指令中的源操作数为常数,称为指令中的源操作数为常数,称为立即数寻址立即数寻址.立即数寻址方式常用来给寄存器赋值,多以立即数寻址方式常用来给寄存器赋值,多以常量形式出现常量形式出现MOV AX, 0102H;AX0102H例:例: MOV AX, 1C8FH 错误例:错误例: MOV 2A00H, AX ; 错误!错误! 操作数存放在操作数存放在CPU的内部寄存器中的内部寄存器中。源操
5、作数与目的操作数字长要相同源操作数与目的操作数字长要相同不允许将立即数传送到段寄存器不允许将立即数传送到段寄存器MOV AX, BX;AXBX 例:例: MOV AX, BX MOV CL, AL错误例:错误例: MOV AX, BL ; 字长不同字长不同 操作数在存储器中,用存地址表示操作数在存储器中,用存地址表示程序设计时,程序设计时,8086采用逻辑地址表示内存地采用逻辑地址表示内存地址址n段地址在默认的段寄存器中(一般默认为段地址在默认的段寄存器中(一般默认为DS)n指令中只需给出操作数的偏移地址(指令中只需给出操作数的偏移地址(有效地址有效地址EA)8086设计了多种设计了多种存储器
6、寻址方式存储器寻址方式1、直接寻址方式、直接寻址方式2、寄存器间接寻址方式、寄存器间接寻址方式3、寄存器相对寻址方式、寄存器相对寻址方式4、基址变址寻址方式、基址变址寻址方式5、基址变址相对寻址方式、基址变址相对寻址方式1. 直接寻址方式直接寻址方式MOV AX, 2000H;AXDS:2000H规定双操作数指令不能两个操作数都规定双操作数指令不能两个操作数都用直接寻址方式。用直接寻址方式。 如: MOV 2000H , 3000H 例:例: 以下指令中源或目标操作数采用了直接寻址方式以下指令中源或目标操作数采用了直接寻址方式 (1) MOV AX,2000H ;AX (DS:2000H) (
7、2) MOV 1200, BL ;(DS:1200H) BL (3) MOV ES:0100, AL ;(ES:0100H) AL 说明:说明:DS:2000H表示内存单元地址;表示内存单元地址; (DS:2000H)表示地址是表示地址是DS:2000H的内存单的内存单元内容。元内容。说明:说明:【例例】设设 DS=4000HDS=4000H,(42000H)=12H(42000H)=12H,(42001H)=34H(42001H)=34H,执行指令执行指令 MOV AXMOV AX,2000H2000H后,后,AX AX = ? = ? 根据指令中给出的有效地址得到存储单元的物根据指令中给出
8、的有效地址得到存储单元的物理地址:理地址: DS DS 16 + 2000H = 42000H 16 + 2000H = 42000H 把该内存单元开始的两个字节的内容传送到把该内存单元开始的两个字节的内容传送到AXAX中。低地址单元内容传送到中。低地址单元内容传送到ALAL中,高地址单元内中,高地址单元内容传送到容传送到AHAH中。中。 AX = 3412H AX = 3412H 执行过程如图所示:执行过程如图所示: 存储器操作码00H20H34H 12HAHAL代码段直接寻址示意图12H34H数据段AXDS=4000H 10H40000H 2000H42000H42000H2. 寄存器间接
9、寻址方式寄存器间接寻址方式操作数的偏移地址操作数的偏移地址(有效地址有效地址EA)放在放在寄存器寄存器中。中。为区别于寄存器寻址,寄存器名要用为区别于寄存器寻址,寄存器名要用“”括括起。起。只有只有SISI、DIDI、BXBX和和BPBP可作间址寄存器。可作间址寄存器。EA = (BX)(BP)(SI)(DI) 【例】设【例】设 DS=3000HDS=3000H,SI=2000HSI=2000H,(32000H)=50H(32000H)=50H, (32001H)=40H(32001H)=40H,执行指令,执行指令 MOV AXMOV AX,SISI后,后,AX AX = ? = ? 根据指令
10、中给出的寄存器及寄存器内容得到根据指令中给出的寄存器及寄存器内容得到存储单元的物理地址:存储单元的物理地址: DS DS 16 + 2000H = 32000H 16 + 2000H = 32000H 把该内存单元开始的两个字节的内容传送到把该内存单元开始的两个字节的内容传送到AXAX中。低地址单元内容传送到中。低地址单元内容传送到ALAL中,高地址单元中,高地址单元内容传送到内容传送到AHAH中。中。 AX = 4050H AX = 4050H 执行过程如图所示:执行过程如图所示:存储器50H40H数据段寄存器间接寻址示意图40H 50HAHALAX32000HDS10H SI 32000H
11、DS=3000H SI=2000H3. 寄存器相对寻址方式寄存器相对寻址方式(包括基址寻址(包括基址寻址和变址寻址)和变址寻址)有效地址有效地址是寄存器内容与有符号是寄存器内容与有符号8位或位或16位位移位位移量之和,寄存器可以是量之和,寄存器可以是BX、BP或或SI、DI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位偏移量(位偏移量(disp)disp)段地址对应段地址对应BX/SI/DI寄存器寄存器默认是默认是DS,对应,对应BP寄存器寄存器默认是默认是SS;可用段超越前缀改变;可用段超越前缀改变EA = (BX)(BP)(SI)(DI)+ 8位位16位位偏
12、移量偏移量 【例】设【例】设 DS=3000HDS=3000H,BX=0100HBX=0100H,(30108H)=12H(30108H)=12H,执行指令执行指令 MOV ALMOV AL,8BX8BX后,后,AL = ? AL = ? 根据指令中给出的寄存器名、偏移量及寄存器根据指令中给出的寄存器名、偏移量及寄存器内容,得到存储单元的物理地址:内容,得到存储单元的物理地址: DS DS 16 + BX + disp = 30108H 16 + BX + disp = 30108H 把该内存单元中内容传送到把该内存单元中内容传送到ALAL中。中。 AL = 12H AL = 12H 执行过程
13、如图所示:执行过程如图所示:存储器12H数据段寄存器相对寻址示意图12HAL30108HDS10H BX disp 30108HDS=3000H BX=0100H disp=8 说明:说明: (1)(1)偏移量是有符号数,偏移量是有符号数,8 8位偏移量的取值范围位偏移量的取值范围为:为:0000FFH(FFH(即即+127+127-128)-128);1616位偏移量的取值位偏移量的取值范围为:范围为:00000000FFFFH(FFFFH(即即+32765+32765-32768)-32768)。 (2)IBM PC(2)IBM PC汇编允许用三种形式表示相对寻址,汇编允许用三种形式表示相
14、对寻址,它们的效果是一样的,如:它们的效果是一样的,如: MOV AXMOV AX,BX+6 BX+6 ;标准格式;标准格式 MOV AXMOV AX,6BX 6BX ;先写偏移值;先写偏移值 MOV AXMOV AX,BX+6 BX+6 ;偏移值写在括号内;偏移值写在括号内 4. 基址变址寻址方式基址变址寻址方式有效地址有效地址由基址寄存器(由基址寄存器(BX或或BP)的内容加)的内容加上变址寄存器(上变址寄存器(SI或或DI)的内容构成:)的内容构成:有效地址有效地址BX/BPSI/DI段地址对应段地址对应BX基址寄存器基址寄存器默认是默认是DS,对应,对应BP基址寄存器基址寄存器默认是默
15、认是SS;可用段超越前缀改变;可用段超越前缀改变MOV AX, BX+SI;AXDS:BX+SIMOV AX, BXSI;AXDS:BX+SI同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现。 【例】设【例】设 SS=3000HSS=3000H,BP=0100HBP=0100H,SI=5SI=5,(30105H)=78H(30105H)=78H,执行指令,执行指令 MOV ALMOV AL,BPSIBPSI后,后,AL = ? AL = ? 根据指令中给出的寄存器名及寄存器内容,根据指令中给出的寄存器名及寄存器内容,得到存储单元的物理地址:得到存储单元的物理地址: SS SS 16 +
16、 BP + SI = 30105H 16 + BP + SI = 30105H 把该内存单元中内容传送到把该内存单元中内容传送到ALAL中。中。 AL = 78HAL = 78H 执行过程如图所示:执行过程如图所示:存储器78H堆栈段基址变址寻址示意图78HAL30105HSS10H BP SI 30105HSS=3000H BP=0100H SI=55. 相对基址变址寻址方式相对基址变址寻址方式有效地址有效地址是基址寄存器(是基址寄存器(BX/BP)、变址寄)、变址寄存器(存器(SI/DI)与一个)与一个8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位
17、位移量位位移量段地址对应段地址对应BX基址寄存器基址寄存器默认是默认是DS,对应,对应BP基址寄存器基址寄存器默认是默认是SS;可用段超越前缀改变;可用段超越前缀改变MOV AX, BX+DI+6;AXDS:BX+DI+6MOV AX, 6BX+DIMOV AX, 6BXDI同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现。 【例】设【例】设 SS=2000HSS=2000H,BP=1000HBP=1000H,SI=0100HSI=0100H,(21105H)=78H(21105H)=78H,执行指令,执行指令 MOV ALMOV AL,5BPSI5BPSI后,后,AL = ? AL
18、= ? 根据指令中给出的寄存器名及寄存器内容,得根据指令中给出的寄存器名及寄存器内容,得到存储单元的物理地址:到存储单元的物理地址: SS SS 16 + BP + SI + disp = 21105H 16 + BP + SI + disp = 21105H 把该内存单元中内容传送到把该内存单元中内容传送到ALAL中。中。 AL = 78HAL = 78H 执行过程如图所示:执行过程如图所示: 存储器78H堆栈段相对基址变址寻址示意图78HAL21105HSS10H BP SI disp 21105HSS=2000H BP=1000H SI=0100H disp=5(AL)()(BL)AX隐
19、含寻址隐含寻址指令操作数是隐含的,在指令中未显式地指令操作数是隐含的,在指令中未显式地指明。指明。 例:例:MUL BL 指令隐含了被乘数指令隐含了被乘数AL及乘积及乘积AX 类似的指令还有:类似的指令还有:DIV、CBW、MOVS等等小结小结指令由(指令由( )和()和( )构成)构成如何取得操作数如何取得操作数称为(称为( )操作码操作码 操作数操作数寻址寻址将例中语法不正确的语句改对将例中语法不正确的语句改对MOV AX ,BLMOV 2000H, 3000HMOV 0200H ,12H改:改: MOV AL ,3000H MOV 2000H ,AL改:改: MOV AL , BL改:改
20、: MOV BYTE PTR 0200H ,12H或者: MOV WORD PTR 0200H,12H注意点注意点1。区别立即数寻址和直接寻址。区别立即数寻址和直接寻址MOV AX,126MOV AX,1262。区别寄存器寻址和寄存器间接寻址。区别寄存器寻址和寄存器间接寻址 MOV AX,BXMOV AX,BX3。双操作数指令中,不能同为存储器操作数。双操作数指令中,不能同为存储器操作数。4。CS不能为目的寄存器。不能为目的寄存器。教学内容教学内容3.3 指令系统指令系统数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算指令逻辑运算指令串操作指令串操作指令控制转移指令控制转移指令处理器控
21、制指令处理器控制指令3.2.1 数据传送指令数据传送指令通用传送指令通用传送指令累加器专用传送指令累加器专用传送指令地址传送指令地址传送指令标志传送指令标志传送指令w对标志位的影响对标志位的影响: : 除除SAHFSAHF和和POPFPOPF指令外,指令外,其余的所有数据传送类指令其余的所有数据传送类指令均不影响均不影响6 6个状个状态标志。态标志。 通用传送指令通用传送指令最基本的传送指令最基本的传送指令(MOV) 堆栈指令堆栈指令(PUSH,POP)数据交换指令数据交换指令(XCHG)换码指令换码指令XLATMOV指令指令格式:格式: MOVdest, src功能功能: : dest sr
22、c操作数类型操作数类型: : dest: reg/mem/seg, src : reg/mem/seg/imm MOV指令指令例例 题题MOV AX,BXMOV AX,BX; ;将将BXBX中的一个字传送到中的一个字传送到AXAX中中MOV AL,DLMOV AL,DL; ;将将DLDL中的一个字节传送到中的一个字节传送到ALAL中中MOV AX,02MOV AX,02; ;将立即数将立即数0202传送到传送到AXAX中中MOV DI,ES:BX+2MOV DI,ES:BX+2; ;MOV AL,4DIMOV AL,4DI; ; MOV AX,BX+2MOV AX,BX+2; ;MOV BXD
23、I,DX MOV BXDI,DX ;例:把例:把BLOCK1地址开始的地址开始的10个字节数个字节数据传送到据传送到BLOCK2地址开始的地址开始的10个字节个字节单元处。单元处。MOV CX,10MOV SI,OFFSET BLOCK1MOV DI,OFFSET BLOCK2NEXT:MOV AL,SIMOV DI,ALINC SI INC DIDEC CXJNZ NEXTHLT堆栈指令堆栈指令PUSHPOP堆栈的图示堆栈的图示SSSSSPSP0000H0000H(栈顶)(栈顶)存储器存储器高地址高地址堆栈段堆栈段堆栈指令堆栈指令格式:格式:PUSHPUSHsrcsrcsrcsrc: reg
24、16/seg/mem16reg16/seg/mem16;功能:功能:先修改指针:先修改指针: SPSP - 2SPSP - 2后压入:后压入: (SP+1SP+1,SPSP) src src堆栈指令堆栈指令格式:格式:POPdestdest: reg16/seg/mem16 ;操作数不能是操作数不能是CS功能:功能:先弹出:先弹出: dest (SP+1,SP) 后修改指针:后修改指针: SP SP+2PUSH AXPUSH DSPOP DSPOP AX用堆栈交换用堆栈交换AX与与CX的值。的值。pushaxpushcxpopaxpopcx标志寄存器进栈和出栈标志寄存器进栈和出栈PUSHFPU
25、SHF; FLAGS; FLAGS进栈进栈POPFPOPF; ; 栈顶字出栈到栈顶字出栈到FLAGSFLAGS只有只有POPFPOPF指令会以弹出值设置标志寄存器。指令会以弹出值设置标志寄存器。数据交换指令数据交换指令格式:格式:XCHGoprd1, oprd2 ; 交换交换oprd1与与oprd2的内容的内容oprd1, oprd2:reg/mem段寄存器和段寄存器和 IP 不能作为交换指令的操作不能作为交换指令的操作数数换码指令换码指令XLAT格式:格式:XLATXLAT; AL = DS: BX +AL AL = DS: BX +AL 功能功能: 使累加器使累加器AL中的值变换为内存表格
26、中中的值变换为内存表格中的某个对应值。的某个对应值。执行过程执行过程:nBX指向表的首地址指向表的首地址nAL表中对应项与表格首地址之间的偏移量表中对应项与表格首地址之间的偏移量nXLATXLAT不影响3.2.1 数据传送指令数据传送指令通用传送指令通用传送指令累加器专用传送指令累加器专用传送指令/输入输出指令输入输出指令地址传送指令地址传送指令标志传送指令标志传送指令地址传送指令地址传送指令LEA (Load Effective Address)LDS (Load pointer into register and DS)LES (Load pointer into register and
27、 ES)LEA (Load Effective Address)格式:格式:LEA REG16, SRC功能:把源操作数的有效地址功能:把源操作数的有效地址EA送到目的送到目的寄存器中寄存器中例题例题 有效地址的获取有效地址的获取mov bx,400hmov si,3chlea bx,bx+si+0f62h;BX400H3CH0F62H139EHwLEALEAAXAX,2728H2728H;(;(AXAX)=2728H=2728HwLEALEABXBX,BP+SIBP+SI;指令执行后,;指令执行后,BXBX中中w 内容为内容为BP+SIBP+SI的值的值wLEALEASPSP,0482H04
28、82H;(;(SPSP)= 482H= 482HMOV AX,2728H将将BLOCK数组的第数组的第6个字数据送到个字数据送到DX中中1。寄存器间接寻址方式。寄存器间接寻址方式LEA BX,BLOCK+10MOV DX,BX2 2。基变址寻址方式基变址寻址方式 LEABX,BLOCK MOVSI,10 MOVDX,BX+SI3.2 指令系统指令系统数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算指令逻辑运算指令串操作指令串操作指令控制转移指令控制转移指令处理器控制指令处理器控制指令算术运算指令算术运算指令1 1、加法指令加法指令2 2、减法指令、减法指令3 3、乘法指令、乘法指令4
29、4、除法指令、除法指令5 5、符号扩展指令、符号扩展指令6 6、十进制调整指令、十进制调整指令汇编语言中的数汇编语言中的数无符号二进制:无符号二进制: 字节:字节:0255 (00FFH),字:字:065535 (0000FFFFH)有符号二进制:有符号二进制: 字节:字节:-128+127 (80HFFH, 00H7FH)字:字:-32768+32767 (8000HFFFFH, 0000H7FFFH)非压缩非压缩BCD码:码: 字节:字节:0009压缩压缩BCD码:码:字节:字节:00098086指令可以进行的运算指令可以进行的运算有有/无符号二进制:无符号二进制: 加、减、乘、除、带进位
30、加、带借位减加、减、乘、除、带进位加、带借位减非压缩非压缩BCD码:码: 加、减、乘、除加、减、乘、除压缩压缩BCD码:码: 加、减加、减规则:规则:所有算术运算指令(除符号扩展指令)所有算术运算指令(除符号扩展指令) 均均。所有算术运算指令均所有算术运算指令均。 1 1、不带进位的加法指令、不带进位的加法指令2 2、带进位的加法指令、带进位的加法指令3 3、加、加1 1指令指令: ADD OPRD1,OPRD2 ;不带进位的加法不带进位的加法 :OPRD1OPRD1+OPRD2 完成两个操作数相加,结果送至目的操作数完成两个操作数相加,结果送至目的操作数OPRD1。目的操作数可以是。目的操作
31、数可以是、操作数。操作数。:ADD AL,30H ;累加器与立即数相加;累加器与立即数相加ADD BX,3000H ;寄存器与内存单元内容相;寄存器与内存单元内容相加加 ADD DI,CX ;通用寄存器之间;通用寄存器之间ADD DX,DATABX+SI;寄存器与存储单元内容;寄存器与存储单元内容 相加相加ADD BETASI,DX ;存储器操作数与寄存器相加;存储器操作数与寄存器相加(2): ADC OPRD1,OPRD2 ;带进位的加法带进位的加法 :OPRD1OPRD1+OPRD2 +CF 完成两个操作数与完成两个操作数与CF相加,结果送至目的操相加,结果送至目的操作数作数OPRD1。
32、若有两个四字节的数,已分别放在自若有两个四字节的数,已分别放在自BUFFER1(加数)和加数)和BUFFER2(被加数)开始的存被加数)开始的存储区中,每个数占四个存储单元。存放时,最低字储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,计算二者相加,结果放置于节在地址最低处,计算二者相加,结果放置于BUFFER1中。中。MOV AX,BUFFER2ADD BUFFER1,AX ;低字加低字加 MOV AX,BUFFER2+2ADC BUFFER1+2,AX ;高字加;高字加(3): INC OPRD ;增量指令(加;增量指令(加1指令)指令): OPRDOPRD+1 1 1、不带借
33、位的减法指令、不带借位的减法指令2 2、带借位的减法指令、带借位的减法指令3 3、减、减1 1指令指令4 4、比较指令、比较指令5 5、求补指令、求补指令Subtraction): SUB OPRD1,OPRD2 ;不考虑借位的减法不考虑借位的减法 :OPRD1OPRD1-OPRD2 完成两个操作数相减,结果送至目的操作数完成两个操作数相减,结果送至目的操作数OPRD1。目的操作数可以是。目的操作数可以是、操作数。操作数。当为无符号数时,若被减数小于减数,产生借位,当为无符号数时,若被减数小于减数,产生借位,CF=1;若为有符号数,相减结果溢出,;若为有符号数,相减结果溢出,OF=1. (2)
34、: SBB OPRD1,OPRD2 ;考虑借位的减法考虑借位的减法 :OPRD1OPRD1-OPRD2 -CF这条指令与这条指令与SUB类似,只是在两个操作数相减时,类似,只是在两个操作数相减时,还要减去借位标志还要减去借位标志CF的现行值结果送至目的操的现行值结果送至目的操作数作数OPRD1。 (3): DEC OPRD ;减量指令(减;减量指令(减1指令)指令): OPRDOPRD-1 DEC SI DEC CL(4): NEG OPRD;求补;求补: 例:例: NEG AL 若若AL00111100, 则执行命令后:则执行命令后: 000000000011110011000100(5):
35、 CMP OPRD1,OPRD2 ;(比较指令)(比较指令): OPRD1-OPRD2 乘乘 法法 指指 令令无符号数的乘法指令无符号数的乘法指令有符号数的乘法指令有符号数的乘法指令MULMUL reg8/mem8 ;AX = AL srcMUL reg16/mem16;DX:AX = AX src对标志位的影响:对标志位的影响:结果的高一半为结果的高一半为0 0,则,则 CF = OF = 0CF = OF = 0,否则,否则,CF = OF = 1CF = OF = 1。IMULIMULreg8/mem8 ;AX = AL srcIMULreg16/mem16;DX:AX = AX src
36、对标志位的影响:对标志位的影响:若结果的高一半为低一半的符号扩展,则若结果的高一半为低一半的符号扩展,则CF = OF = 0CF = OF = 0,否则,否则,CF = OF = 1CF = OF = 1;其余标志无定义。;其余标志无定义。EXAMPLE设设AL = 0FFHAL = 0FFH,BL = 1BL = 1,分别执行下列指令,分别执行下列指令,会得出不同结果。会得出不同结果。mulbl; imulbl; ax = 00ffh(255)ax = 0ffffh(-1)除除 法法 指指 令令无符号数除法无符号数除法有符号数除法有符号数除法除除 法法 指指 令令语法格式:语法格式:DIV
37、reg/mem IDIVreg/memw要求用要求用1616位数除以位数除以8 8位数,或者用位数,或者用3232位数位数除以除以1616位数。位数。w有符号数除法规定余有符号数除法规定余数的符号和被除数的数的符号和被除数的符号相同。符号相同。符号扩展指令符号扩展指令-不影响标志位不影响标志位格式:CBW功能:将:将AL中的符号位扩展到中的符号位扩展到AH中,即当中,即当AL=80H时,执行时,执行CBW指令后,指令后,AH=FFH。格式:CWD功能:将:将AX中的符号位扩展到中的符号位扩展到DX中,即当中,即当AX=8000H时,执行时,执行CWD指令后,指令后,DX=FFFFH。十进制调整
38、指令十进制调整指令n压缩压缩BCD码的加法十进制调整指令码的加法十进制调整指令DAAn压缩压缩BCD码的减法十进制调整指令码的减法十进制调整指令DASn加法的加法的ASCII码调整指令码调整指令AAA n减法的减法的ASCII码调整指令码调整指令AAS n乘法的乘法的ASCII码调整指令码调整指令AAM n除法的除法的ASCII码调整指令码调整指令AAD AF=1或或AL寄存器低寄存器低4位位9,则,则AL寄存寄存器内容加器内容加/减减06H;且置;且置AF=1CF=1或或AL寄存器高寄存器高4位位9,则,则AL寄存寄存器内容加器内容加/减减60H;且置;且置CF=11) 1) 压缩压缩BCD
39、BCD数加法调整指令数加法调整指令DAADAA AL0FH9H?OR AF=1 AL AL + 06HAF 1YNDAA执行流程ALF0H90H?OR CF=1 AL AL + 60HCF 1调整开始调整结束YN【例】【例】39 + 17 = 5639 + 17 = 56 MOV ALMOV AL,39H39H ADD AL ADD AL,17H 17H ; ;CF=0CF=0 DAA DAA ;AL=56HAL=56H 2) 2) 压缩压缩BCDBCD数数减减法调整指令法调整指令DADAS S 【例】【例】37 - 19 = 1837 - 19 = 18 MOV AL MOV AL,37H3
40、7H SUB AL SUB AL,19H 19H ;AL=1EHAL=1EH,AF=1AF=1, ; CF=0CF=0 DAS DAS ;AL=18HAL=18H,AF=1AF=1 AL0FH9H?OR AF=1 AL AL - 06HAF 1YNDAS执行流程ALF0H90H?OR CF=1 AL AL - 60HCF 1调整开始调整结束YN3) 3) 加加法法的的ASCIIASCII调整指令调整指令AAAAAA 【例】【例】7+9=167+9=16 MOV AL MOV AL,7 7 ;AL=37HAL=37H ADD AL ADD AL,9 9 ;AL=70H,AF=1AL=70H,AF
41、=1, ;CF=0CF=0 AAA AAA ;AL=06HAL=06H,CF=AF=1CF=AF=1AL0FH9H?OR AF=1 AL AL + 06HAH AH + 1AF 1YNAAA执行流程AL AL0FHCF AF调整开始调整结束AF 04) 4) 减减法法的的ASCIIASCII调整指令调整指令AAAAS S AL0FH9H?OR AF=1 AL AL - 06HAH AH - 1AF 1YNAAS执行流程AL AL0FHCF AF调整开始调整结束AF 05) 5) 乘乘法法的的ASCIIASCII调整指令调整指令AAAAM M 【例】【例】9 9 3 = 27 3 = 27 MO
42、V AL MOV AL,9H 9H ;AL = 0000 1001BAL = 0000 1001B MOV BL MOV BL,3H 3H ;BL = 0000 0011BBL = 0000 0011B MUL BL MUL BL ;AH=0AH=0,AL=1BH=27DAL=1BH=27D AAM AAM ;AH=02HAH=02H,AL=07HAL=07H调整开始AH AL10的商AL AL10的余数AAM执行流程调整结束6) 6) 除法的除法的ASCIIASCII调整指令调整指令AAAAD D 【例】【例】15 15 3 = 5 3 = 5 MOV AH MOV AH,1 1 MOV A
43、L MOV AL,5 5 MOV BL MOV BL,3 3 AAD AAD ;AL=1AL=110+5=15D=0FH10+5=15D=0FH DIV BL DIV BL ;AL=05HAL=05H,AH=0 AH=0 调整开始AL AH10+ALAH 0AAD执行流程调整结束BCD码调整指令的说明码调整指令的说明共共6条,均为隐含寻址方式,隐含的操作数是条,均为隐含寻址方式,隐含的操作数是 AL或或AL、AH;不能单独使用,要紧跟在相应的算术运算指令不能单独使用,要紧跟在相应的算术运算指令 之后;之后;执行结果为压缩执行结果为压缩BCD码或扩展码或扩展BCD码表示的十码表示的十进制数。进制
44、数。非压缩非压缩BCD码调整指令码调整指令AAA ; 调整调整AL中的和为非压缩中的和为非压缩BCD码码; 调整后,调整后,AL高高4位位 = 0,AH = AH + CFAAS; 调整调整AL中的差为非压缩中的差为非压缩BCD码码; 调整后,调整后,AL高高4位位 = 0,AH = AH CFAAM ; AH = AX div 10,AL = AX mod 10AAD ; AL = AH 10 + AL,AH = 0AAA与与AAS:CF反映非压缩反映非压缩BCD码加码加/减的进位减的进位/借位;借位;OF、SF和和ZF不确定。不确定。3.3.3 逻辑运算和移位指令逻辑运算和移位指令逻辑运算
45、逻辑运算移位操作移位操作与与或或非非异或异或非循环移位非循环移位循环移位循环移位逻辑移位逻辑移位算术移位算术移位不带进位位的移位不带进位位的移位带进位位的移位带进位位的移位1 1 逻辑运算指令逻辑运算指令 逻辑运算指令包括逻辑非逻辑运算指令包括逻辑非(NOT)(NOT)、逻辑与、逻辑与(AND)(AND)、逻辑测试、逻辑测试(TEST)(TEST)、逻辑或、逻辑或(OR)(OR)和逻辑和逻辑异或异或(XOR)(XOR)指令。这些指令的操作数可以是指令。这些指令的操作数可以是8 8位、位、1616位,运算位,运算按位按位进行。对操作数的要求与进行。对操作数的要求与MOVMOV指令相同。指令相同。
46、逻辑运算指令格式逻辑运算指令格式AND dest, src; dest = dest and srcORdest, src; dest = dest or srcXORdest, src; dest = dest xor srcNOTdest; dest = not destTEST dest, src; dest and src,执行,执行AND ;操作但不存储结果到操作但不存储结果到destdest :reg/memsrc : reg/mem/imm【例】将【例】将ALAL寄存器中第寄存器中第3 3位和第位和第7 7位置位置1 1。 MOV ALMOV AL,0 0 OR AL OR AL
47、,88H88H【例】从端口【例】从端口61H61H读取一个字节,读取一个字节,D D1 1位求反后,从位求反后,从61H61H送出送出 IN ALIN AL,61H61H XOR AL XOR AL,00000010B00000010B OUT 61H OUT 61H,ALAL【例】用逻辑指令将寄存器【例】用逻辑指令将寄存器AXAX清零清零 XOR AXXOR AX,AXAX移移 位位 指指 令令移位指令移位指令循环移位指令循环移位指令1. 1. 一般移位指令一般移位指令 移位指令包括:移位指令包括:、。指令格式及功能如表所示:。指令格式及功能如表所示:名称名称格格 式式功能图示及说明功能图示
48、及说明说说 明明逻辑逻辑左移左移SHL destSHL dest,1/CL1/CL目标操作数左移目标操作数左移CNTCNT次,最低位次,最低位补补0 0,最高位移至标志位,最高位移至标志位CFCF中。中。CNTCNT代表移动次数代表移动次数CNT 1CNT 1时,次数时,次数必须送必须送CLCL寄存器;寄存器;CFCF、ZFZF、SFSF、PFPF根据运算结果定;根据运算结果定;CNT = 1CNT = 1时,若移时,若移位后符号位发生变位后符号位发生变化,则标志位化,则标志位OF=1OF=1,否则,否则OF=0OF=0;CNT 1CNT 1时,对时,对OFOF无定义。无定义。逻辑逻辑右移右移
49、SHR destSHR dest,1/CL1/CL目标操作数右移目标操作数右移CNTCNT次,最低位次,最低位移至标志位移至标志位CFCF中,最高位补中,最高位补0 0。算术算术左移左移SAL destSAL dest,1/CL1/CL目标操作数左移目标操作数左移CNTCNT次,最低位次,最低位补补0 0,最高位移至标志位,最高位移至标志位CFCF中。中。算术算术右移右移SAR destSAR dest,1/CL1/CL目标操作数右移目标操作数右移CNTCNT次,最低位次,最低位移至标志位移至标志位CFCF中,最高位不变。中,最高位不变。0CF0CF0CFCF【例】设无符号数 X 在寄存器AL
50、中,用移位指令实现X*10的运算 MOV AH,0 SAL AX,1 ;计算2*X MOV BX,AX MOV CL,2 SAL AX,CL ;计算8*X ADD AX,BX ;计算2*X+8*X = 10*X2 2 循环移位指令循环移位指令 名称名称格格 式式功能图示及说明功能图示及说明说说 明明不带进不带进位循环位循环左移左移ROL destROL dest,1/CL1/CL目标操作数循环左移目标操作数循环左移CNTCNT次,最高位次,最高位移至最低位的同时移至标志位移至最低位的同时移至标志位CFCF中。中。CNTCNT代表移代表移动次数动次数CNT 1CNT 1时时,次数必须送,次数必须
51、送CLCL寄存器;寄存器;CFCF由运算结由运算结果定;果定;不影响不影响SFSF、ZFZF、AFAF、PFPF;对对OFOF的影响的影响同同SHLSHL。不带进不带进位循环位循环右移右移ROR destROR dest,1/CL1/CL目标操作数循环右移目标操作数循环右移CNTCNT次,最低位次,最低位移至最高位的同时移至标志位移至最高位的同时移至标志位CFCF中。中。带进位带进位位循环位循环左移左移RCL destRCL dest,1/CL1/CL目标操作数及标志位目标操作数及标志位CFCF一起循环左移一起循环左移CNTCNT次次,标志位移至最低位,最高位移至标志位中,标志位移至最低位,最
52、高位移至标志位中带进位带进位位循环位循环右移右移RCR destRCR dest,1/CL1/CL目标操作数及标志位目标操作数及标志位CFCF一起循环右移一起循环右移CNTCNT次,标志位移至标最高位,最低次,标志位移至标最高位,最低位移至标志位中。位移至标志位中。CFCFCFCF3.3.5 串操作指令串操作指令字符串传送指令字符串传送指令MOVSB/MOVSW字符串比较指令字符串比较指令CMPSB /CMPSW 字符串检索指令字符串检索指令SCASB/ SCASW取字符串指令取字符串指令 LODSB /LODSW存字符串指令存字符串指令 STOSB/STOSW实现存储器到存储器的数据传送实现
53、存储器到存储器的数据传送串操作指令的特点串操作指令的特点源串一般存放在源串一般存放在数据段数据段,偏移地址由,偏移地址由SI指定。指定。目标串必须在目标串必须在附加段附加段,偏移地址由,偏移地址由DI指定指定.指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DF决定。决定。DF=0 增地址方向;增地址方向;DF=1 减地址方向减地址方向.数据块长度值由数据块长度值由CX指定指定可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容内容 MOVS DST,SRC MOVSB (字节操作)(字节操作) MOVSW (字操作)(字操作) 源地址用源地址用SISI寄存
54、器指出;寄存器指出; 目的地址用目的地址用DIDI寄存器指出寄存器指出 CX CX中为字节数或字数。中为字节数或字数。 若若DFDF为为0 0,用用MOVSBMOVSB时,每传送一次,时,每传送一次,SISI和和DIDI自动增自动增1 1;用用MOVSWMOVSW时,每传送一次,时,每传送一次,SISI和和DIDI自动增自动增2 2MOVSBMOVSB指令指令注意点注意点: SCAS DST SCASB SCASW 用用AL(字节串)或(字节串)或AX(字串)的值减(字串)的值减去目标串中去目标串中ES:DI所指的串元素值,结果反映在所指的串元素值,结果反映在标志位上;然后自动修改标志位上;然
55、后自动修改DI。 分别是分别是字节字节串和串和字字串的检串的检索指令,隐含了操作数。索指令,隐含了操作数。实际上是源串实际上是源串固定为累加器固定为累加器的串比较指令的串比较指令 将源串中将源串中DS:SI所指的串元素复制到所指的串元素复制到AL(字节串)或(字节串)或AX(字串)中;然后自动修改(字串)中;然后自动修改SI。 分别是分别是字节字节串和串和字字串的装串的装入指令,隐含了操作数。入指令,隐含了操作数。一般不使用重复前缀一般不使用重复前缀!实际上是目标实际上是目标串固定为累加串固定为累加器的串传送指器的串传送指令令 将AL(字节串)或AX(字串)的值复制到目标串中ES:DI所指的单
56、元处;然后自动修改DI。 分别是字节串和字串的存储指令,隐含了操作数。实际上是源串实际上是源串固定为累加器固定为累加器的串传送指令的串传送指令 串操作指令串操作指令 串操作指令执行之后,先修改串操作指令执行之后,先修改CX(CX1CX),再判断串是否处理完(),再判断串是否处理完(CX是是否为否为0):不是):不是0,继续执行该串操作指令;否则,继续执行该串操作指令;否则顺序执行下一条指令。顺序执行下一条指令。 串操作指令串操作指令 串操作指令执行之后修改串操作指令执行之后修改CX (CX1CX) ,判断是否满足串未完,判断是否满足串未完(CX0)、且结果相等()、且结果相等(ZF1):满足则
57、继):满足则继续执行该串操作指令;否则顺序执行下一条指续执行该串操作指令;否则顺序执行下一条指令。令。 串操作指令串操作指令 串操作指令执行之后修改串操作指令执行之后修改CX (CX1CX) ,判断是否满足串未完,判断是否满足串未完(CX0)、且结果不等()、且结果不等(ZF0):满足则继):满足则继续执行该串操作指令;否则顺序执行下一条指续执行该串操作指令;否则顺序执行下一条指令。令。例例3-58用用MOVS指令实现将指令实现将200B数据从内存的一个数据从内存的一个区域(区域(1000H)送到另一个区域()送到另一个区域(2000H)。)。 LEA SI,MEM1 LEA DI,MEM2
58、MOV CX,200 CLD REP MOVSB例例3-59比较两个字符串,找出其中第一个不相等字符比较两个字符串,找出其中第一个不相等字符的地址。若两字符串完全相同,则将的地址。若两字符串完全相同,则将RESULT单元置为单元置为00H。这两个字符串长度均为。这两个字符串长度均为50,首地址分别为首地址分别为STRING1和和STRING2 LEA SI,STRING1 LEA DI,STRING2 MOV CX,50 CLD REPE CMPSB JZ MATCH DEC SI DEC DI HLTMATCH: MOV RESULT, 0 HLT例例3-60在某字符串在某字符串STRING
59、中查找是否存在中查找是否存在$字符,字符,若存在,则将若存在,则将$字符所在地址送入字符所在地址送入BX中,否中,否则将则将BX置置0 CLD MOV CX,10 MOV DI , STRING MOV AL, $ REPNE SCASB JNZ ZER DEC DI MOV BX, DI JMP ST0ZER: MOV BX, 0ST0: HLTLEA DI,ES:0600H ;目的串首单元偏移地址送DIMOV CX,00FFH ;要传送的字节数放入CXCLD ;置方向标志XOR AL,AL ;清AL,使AL为“0”LREP STOSB ;“0”重复存入256个字节单元HLT3.3.5 控制转移指令控制转移指令转移类指令转移类指令 过程调用类指令过程调用类指令循环控制指令循环控制指令 中断控制类指令中断控制类指令转移类指令转移类指令无条件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国聚亚烷基二醇行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国耐化学品手套行业市场发展分析及发展趋势预测与战略投资研究报告
- 2025-2030中国网球运动服行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国经济型酒店行业市场发展分析及竞争格局与投资前景研究报告
- 2025-2030中国纯尼古丁行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国神经性厌食症的治疗行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国磷酸氯喹片行业市场全景调研及投资价值评估咨询报告
- 2025-2030中国碳吸附器行业市场发展趋势与前景展望战略研究报告
- 拆除钢架施工方案
- 2024-2025项目部安全管理人员安全培训考试试题及答案a4版
- 高血压健康教育知识讲座课件
- 肾内科血透室品管圈
- 小学劳动教育一年级下册第二单元第3课《削果皮》课件
- 担任学生干部证明
- 学校消防宣传周活动方案食品安全宣传周方案
- 妇产科医生个人职业发展路径计划
- 装修工程合同范本(中英文版)
- 成人住院患者静脉血栓栓塞症预防护理
- 导游知识与技能训练智慧树知到期末考试答案章节答案2024年丽江文化旅游学院
- 无小孩无共同财产离婚协议书
- 企业多元化与包容性政策
评论
0/150
提交评论