版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 8086指令系统指令系统l3.1 8086的寻址方式的寻址方式l3.2 8086的指令系统的指令系统开开 始始80868086CPUCPU的指令系统的基本指令的指令系统的基本指令 l包括包括数据传送类指令数据传送类指令、算术运算类指令算术运算类指令、位操作类指令位操作类指令、串操作类指令串操作类指令、控制转移控制转移类指令类指令、处理机控制类指令处理机控制类指令。后几节将分。后几节将分别介绍这些指令的语句格式和功能。别介绍这些指令的语句格式和功能。3.1 8086的寻址方式的寻址方式l3.1.1 数据的寻址方式数据的寻址方式l3.1.2 程序转移地址的寻址方式程序转移地址的寻址方式
2、 l3.1.3 对端口的寻址方式对端口的寻址方式 返回本章首页返回本章首页3.1.1 数据的寻址方式数据的寻址方式1 1立即寻址立即寻址2 2. . 寄存器寻址寄存器寻址3 3. . 直接寻址直接寻址4 4. . 寄存器间接寻址寄存器间接寻址5 5. . 寄存器相对寻址寄存器相对寻址6 6基址变址寻址基址变址寻址7 7. . 相对基址变址寻址相对基址变址寻址8 8. . 跨段问题跨段问题返回本节返回本节3.1.1 数据的寻址方式数据的寻址方式 MOV AX, ?-立即数立即数?-寄存器寄存器?-内存内存-地址地址1 1立即寻址立即寻址l立即寻址方式中,指令操作码和操作数都在立即寻址方式中,指令
3、操作码和操作数都在存储存储器代码段器代码段中。中。l汇编格式:汇编格式:nl功能:操作数存放在指令代码中,指令下一单元功能:操作数存放在指令代码中,指令下一单元的内容为立即操作数的内容为立即操作数n。 【例【例3 3-1-1】MOV AXMOV AX, 10 10执行后:(执行后:(AX)=000AH l本质:本质:在指令执行过程中,立即数作为指令的一在指令执行过程中,立即数作为指令的一部分直接从指令预取单元中取出,部分直接从指令预取单元中取出,不需要再访问存不需要再访问存储器储器,因此这种寻址方式执行速度最快。,因此这种寻址方式执行速度最快。返回本节返回本节2 . 寄存器寻址寄存器寻址l寄存
4、器寻址方式的寄存器寻址方式的操作数操作数在在指令指明的寄指令指明的寄存器存器中。中。l汇编格式:汇编格式:R ,其中其中R表示寄存器名。表示寄存器名。l功能:操作数功能:操作数直接存放在寄存器直接存放在寄存器R中。中。l例如:例如:MOV AL,BL 【例【例3 3-2-2】下列程序执行后,下列程序执行后,(AX)=?,?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX执行:执行:1234HAX 5678HBX (AX)+(BX)AX执行后:(执行后:(AX)=68ACH,(,(BX)=5678H3 . 直接寻址直接寻址l特点:特点:操作数在操作数在内存内
5、存中。中。l汇编格式汇编格式:含有变量的地址表达式。:含有变量的地址表达式。 段寄存器名:段寄存器名: EA EA 。l功能功能:指令下一字单元的内容是操作数的偏:指令下一字单元的内容是操作数的偏移地址移地址EAEA。l图形表示图形表示:【例【例3 3-3-3】 寄存器和存储器内容为寄存器和存储器内容为:(AX)=1212H,(DS)=3000H,(,(32000H)=45H,(32001H)=46H。执行指令执行指令:MOV AX ,2000H问执行后:(问执行后:(AX)=?Step1:计算地址:计算地址DS*16+2000H=32000HStep2:找内容:找内容(32000H),(32
6、001H)所以执行后:(所以执行后:(AX)=4645H返回本节返回本节4 寄存器间接寻址寄存器间接寻址l特点:特点:寄存器间接寻址方式中,寄存器间接寻址方式中,寄存器的寄存器的内容为操作数的偏移地址内容为操作数的偏移地址EAEA,操作数在存操作数在存储器中。储器中。l汇编格式:汇编格式: RRl功能:功能:操作数存放在存储器,寄存器操作数存放在存储器,寄存器R R存存放操作数的偏移地址放操作数的偏移地址EAEA。偏移地址偏移地址EA计算方法如下:计算方法如下:EA=SI SI作间址寄存器。作间址寄存器。 DI DI作间址寄存器。作间址寄存器。BXBX作间址寄存器。作间址寄存器。BP BP作间
7、址寄存器。作间址寄存器。段地址的确定:段地址的确定: BX、DI、SI默认对应默认对应DS; BP默认对应默认对应SS。执行指令执行指令MOV AXMOV AX,BPBP,问执行后(,问执行后(AXAX)=?=?Step1:计算地址:计算地址SS*16+BP=20030HStep2:找内容:找内容(20030H)=1234H所以执行后:(所以执行后:(AX)=1234H【例【例3-4】寄存器和存储器内容分别为:寄存器和存储器内容分别为:(AX)=0,(,(BP)=0030H,(,(SS)=2000H,(20030H)=1234H返回本节返回本节5 寄存器相对寻址寄存器相对寻址l特点特点:相对寻
8、址方式操作数的:相对寻址方式操作数的偏移地址偏移地址EAEA为为寄存器的内容加位移量寄存器的内容加位移量,操作数在存储器中。,操作数在存储器中。l汇编格式汇编格式:XRXR(X X表示位移量,是表示位移量,是8 8位或位或1616位二进制补码表示的有符号数)位二进制补码表示的有符号数)5 寄存器相对寻址寄存器相对寻址l功能功能:操作数存放在存储器,寄存器:操作数存放在存储器,寄存器R R的内的内容加位移量容加位移量X X为操作数的偏移地址为操作数的偏移地址EAEA。l图形表示如下图形表示如下:l偏移地址偏移地址EA计算方法如下:计算方法如下:段地址的确定:段地址的确定: BX、DI、SI默认对
9、应默认对应DS; BP默认对应默认对应SS。【例例3-5】设执行前:设执行前:(AX)=0040H,(,(BX)=0030H,(,(DS)=2000H,(,(20036H)=0050H 执行指执行指令:令:ADD BX+6,AX问执行后:问执行后:(AX)=?,(,(BX)=?,(,(DS)=?,(20036H)=?l执行:(执行:(20036H)+(AX) 20036Hl执行后:(执行后:(AX)=0040H,(,(BX)=0030H,(DS)=2000H,(20036H)=0090H。 6 6基址变址寻址基址变址寻址l特点:特点:基址变址寻址方式中,操作数的偏移基址变址寻址方式中,操作数的
10、偏移地址地址EA为指令中基址寄存器(为指令中基址寄存器(BR)内容、内容、变址寄存器(变址寄存器(IR)内容之和,操作数在内存内容之和,操作数在内存中。中。l汇编格式汇编格式:BRIRl功能功能:操作数在存储器中,:操作数在存储器中,BR的内容加的内容加IR的的内容形成操作数的偏移地址内容形成操作数的偏移地址EA。6 6基址变址寻址基址变址寻址l注意注意:基址变址寻址方式适于数组、字符:基址变址寻址方式适于数组、字符串、表格的处理,它必须是串、表格的处理,它必须是一个基址寄存器一个基址寄存器(BX、BP)和和一个变址寄存器一个变址寄存器(SI、DI)的组的组合合.l下面两种形式是错误的:下面两
11、种形式是错误的:MOV AX, BXBP 或或MOV AX, SIDI7 相对基址变址寻址相对基址变址寻址l特点:特点:相对基址变址寻址方式中,操作数的相对基址变址寻址方式中,操作数的偏移地址偏移地址EAEA是指令中基址寄存器内容、变址是指令中基址寄存器内容、变址寄存器内容、位移量三项之和,操作数在寄存器内容、位移量三项之和,操作数在存储器中。存储器中。l汇编格式汇编格式:X BR+IRX BR+IRl功能功能:操作数存放在存储器,:操作数存放在存储器,BRBR的内容加的内容加IRIR的内容加位移量的内容加位移量X X是操作数的偏移地址是操作数的偏移地址EAEA。l操作数偏移地址操作数偏移地址
12、EA计算方法如下:计算方法如下:返回本节返回本节段地址的确定:段地址的确定: 以基址寄存器对应的段寄存器为准。以基址寄存器对应的段寄存器为准。8 跨段问题跨段问题l当要否定默认状态,到非约定段寻找操作数当要否定默认状态,到非约定段寻找操作数时,必须用时,必须用跨段前缀跨段前缀指明操作数的段寄存器指明操作数的段寄存器名。名。l汇编格式汇编格式:段寄存器名:操作数地址。:段寄存器名:操作数地址。l功能功能:段寄存器名指明操作数属哪个段。:段寄存器名指明操作数属哪个段。 【例【例3 3-6-6】跨段前缀示例。跨段前缀示例。 lMOV AXMOV AX,DSDS:BP BP lMOV CXMOV CX
13、,SSSS:SI SI l该例中,该例中,DSDS:,:,SSSS:均为跨段前缀,此时均为跨段前缀,此时默认状态无效,操作数的物理地址默认状态无效,操作数的物理地址PAPA由段由段寄存器内容左移寄存器内容左移4 4位加偏移位加偏移EAEA形成。形成。l上述上述2 2条指令的源操作数物理地址分别为:条指令的源操作数物理地址分别为:lPA1 =PA1 =(DSDS)* *16+BP16+BPlPA2 =PA2 =(SSSS)* *1616+SISI返回本节返回本节 用来确定用来确定转移指令转移指令及及CALLCALL指令指令的转向地址。的转向地址。段内段内寻址寻址段间段间寻址寻址段内段内直接寻址直
14、接寻址段内段内间接寻址间接寻址段间段间直接寻址直接寻址段间段间间接寻址间接寻址段内段内:转移指令与转向的目标指令在同一代码段中转移指令与转向的目标指令在同一代码段中,(,(CS)不变。不变。段间段间:转移指令与转向的目标指令在两个代码段中转移指令与转向的目标指令在两个代码段中, (CS)变化。变化。3.1.2 程序转移地址的寻址方式程序转移地址的寻址方式表示转移距离(称为位移量)的操作符表示转移距离(称为位移量)的操作符: :SHORT 短转移,短转移,位移量在位移量在-128127-128127字节之间字节之间。 JMP SHORT NEXTNEAR 近转移,在同一段内转移,近转移,在同一段
15、内转移, 位移量在位移量在-3276832767字节范围内。字节范围内。 JMP NEAR PTR AGAINFAR 远转移,表示转移距离超过远转移,表示转移距离超过32K字节,字节, 或是在不同段之间转移。或是在不同段之间转移。 JMP FAR PTR WAIT 转向的有效地址转向的有效地址EA = 转向地址转向地址 = 16d (CS) + (IP)新新 (IP)当前当前 + 位移量位移量( 8bit / 16bit )(IP)新新例例3-7: 段内直接寻址方式的示例段内直接寻址方式的示例 1060:000D EB04 JMPSHORT NEXT IP当前值当前值1060:000F 106
16、0:0011 1060:0013 0207 NEXT: ADD AL,BX 1. 段内段内直接寻址直接寻址特点特点:转向的有效地址:转向的有效地址EA是一个寄存器或存储单元的是一个寄存器或存储单元的内容。内容。 物理地址物理地址 = 16d (CS) + EA例例3-8 (BX)=1256H (SI)=528EH TABLE=20A2H (DS)=2000H (232F8H)=3280H (264E4H)=2450H JMP BX ; (IP)1256H JMP TABLEBX ; (IP)3280H JMP BXSI ; (IP)2450H2. 段内段内间接寻址间接寻址 用指令中提供的转向段
17、地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS和和IP 物理地址物理地址 = 16d (CS) + (IP) 例例3-9: code1 segment EA 0250 2000 jmp far ptr next code1 ends code2 segment next: . code2 ends3. 段间段间直接寻址直接寻址 用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS和和IP。(存储单元的地址可用除立即数和寄存器以外的任存储单元的地址可用除立即数和寄存器以外的任何一种数据寻址方式得到何一种数据寻址方式得到) 物理地址物理地址 = 16 (DS) + E
18、A 例:例: JMP DWORD PTR INTERS+BX存储器IPCS4. 段间段间间接寻址间接寻址3.1.3 对端口的寻址方式对端口的寻址方式 l计算机中主要有两种计算机中主要有两种I/O寻址方式:寻址方式:独立编址独立编址和和统一编址统一编址。l独立编址的特点是独立编址的特点是:存储器和:存储器和I/O端口在两个端口在两个独独立立的地址空间中,访问的地址空间中,访问I/O端口用端口用专用的命令专用的命令。l统一编址的特点是统一编址的特点是:存储器和:存储器和I/O端口端口共用共用统一统一的地址空间,的地址空间,I/O端口作为存储器的某些存储单端口作为存储器的某些存储单元,所有访问存储器
19、的指令都可用于元,所有访问存储器的指令都可用于I/O端口。端口。l8086/8088一般对一般对I/O端口采用端口采用独立编址管理独立编址管理,CPU用用16位地址去访问端口空间,端口空间的位地址去访问端口空间,端口空间的大小为大小为64KB。1直接寻址直接寻址l是由指令是由指令直接给出直接给出所要找的端口地址,端口的所要找的端口地址,端口的直接寻址方式所提供的直接地址是直接寻址方式所提供的直接地址是8位位的,即的,即寻址范围仅为寻址范围仅为0255。端口的直接地址不能。端口的直接地址不能用任何括号括起,不能理解为立即数。用任何括号括起,不能理解为立即数。2间接寻址间接寻址l必须把必须把16位
20、的端口地址放在位的端口地址放在寄存器寄存器DX中,用中,用DX进行端口的间接寻址,端口的间接寻址只进行端口的间接寻址,端口的间接寻址只能使用能使用DX寄存器进行,并且对端口的间接寻寄存器进行,并且对端口的间接寻址所用的寄存器址所用的寄存器DX是不加任何括号的,不能是不加任何括号的,不能理解为寄存器寻址。理解为寄存器寻址。练习题练习题已知已知DS=1000H,SS=2000H,ES=3000H,BX=0100H,DS=1000H,SS=2000H,ES=3000H,BX=0100H,SI=0200H,BP=0300H,SI=0200H,BP=0300H,COUNT=30HCOUNT=30H,10
21、100H=5CH,10100H=5CH,10101H=4DH,20500H=31H,20501H=90H,10101H=4DH,20500H=31H,20501H=90H,30330H=FFH,30331H=EEH.30330H=FFH,30331H=EEH.求:分别执行指令求:分别执行指令MOV AX,BX MOV AX,BX MOV AX,BX MOV AX,BX MOV AX,BP+SI MOV AX,BP+SI MOV AX, ES: BP+MOV AX, ES: BP+COUNTCOUNT 后后AXAX中存放的内容。中存放的内容。练习题练习题已知已知DS=1000H,SS=2000H
22、,ES=3000H,BX=0100H,DS=1000H,SS=2000H,ES=3000H,BX=0100H,SI=0200H,BP=0300H,SI=0200H,BP=0300H,COUNT=30HCOUNT=30H,10100H=4D5CH,10100H=4D5CH,20500H=9031H,30330H=EEFFH.,20500H=9031H,30330H=EEFFH.求:分别执行指令求:分别执行指令MOV AX,BX MOV AX,BX MOV AX,BX MOV AX,BX MOV AX,BP+SI MOV AX,BP+SI MOV AX, ES: BP+MOV AX, ES: BP
23、+COUNTCOUNT 后后AXAX中存放的内容。中存放的内容。3.2 8086的指令系统的指令系统 l3.2.1 数据传送类指令数据传送类指令 l3.2.2 算术运算类指令算术运算类指令 l3.2.3 位操作类指令位操作类指令 l3.2.4 串操作类指令串操作类指令 l3.2.5 控制转移类指令控制转移类指令 l3.2.6 处理机控制类指令处理机控制类指令 返回本章首页返回本章首页80868086CPUCPU的指令的共同的规律的指令的共同的规律 l l大多数数据传送类指令、算术运算类指令、位大多数数据传送类指令、算术运算类指令、位操作类指令及串操作类指令,其双操作数指令操作类指令及串操作类指
24、令,其双操作数指令有相同的语句格式和操作规定。有相同的语句格式和操作规定。 语句格式语句格式:标号:标号: 操作符操作符 OPD, OPS ;注释注释l l算术运算和位操作类指令的部分单操作数指令算术运算和位操作类指令的部分单操作数指令有相同的语句格式和操作规定。有相同的语句格式和操作规定。 语句格式语句格式:标号:标号: 操作符操作符 OPD ;注释注释3.2.1 数据传送类指令数据传送类指令l3.2.1.1 通用数据传送指令通用数据传送指令l3.2.1.2 堆栈操作指令堆栈操作指令l3.2.1.3 标志寄存器传送指令标志寄存器传送指令l3.2.1.4 地址传送指令地址传送指令l3.2.1.
25、5 输入输出指令输入输出指令返回本节返回本节3.2.1.1 3.2.1.1 通用数据传送指令通用数据传送指令l1传送指令传送指令MOVl2数据交换指令数据交换指令XCHGl3查表转换指令查表转换指令 XLAT1 1传送指令传送指令MOVMOV语句格式:语句格式:MOV OPDMOV OPD,OPSOPS功能:功能:将源操作数传送入目的地址,源地将源操作数传送入目的地址,源地址内容不变。即(址内容不变。即(OPSOPS)OPDOPD。下图下图3.13.1描述了描述了MOVMOV指令在传送数据时允许指令在传送数据时允许传送的路径及类型。传送的路径及类型。图图3.1 MOV指令所允许的数据传送路径及
26、类型指令所允许的数据传送路径及类型【例【例3.13.1】存储器与寄存器间数据传送。存储器与寄存器间数据传送。lMOV AX,BUF ;BUF是变量,源操作数为是变量,源操作数为 ;直接寻址;直接寻址lMOV BH,DI;源操作数为寄存器间接寻址源操作数为寄存器间接寻址lMOV DI,ES:3SI ;源操作数为变址寻址源操作数为变址寻址MOV BP,3BX+SI;源操作数为基址加变址寻源操作数为基址加变址寻址址lMOV BUFA,DL;BUFA是一字节变量是一字节变量lMOV BP,AX;使用使用SS段寄存器段寄存器lMOV DS:BP,DL;使用跨段前缀使用跨段前缀lMOV BUF,DS;BU
27、F是个字变量是个字变量lMOV ES ,BUF在应用传送指令在应用传送指令MOV传送数据时应当传送数据时应当注意注意以下几点以下几点(1) 立即数只能出现在源操作数位置立即数只能出现在源操作数位置。如。如 MOV l0H,AL 是错误的。是错误的。(2) 立即数不能直接传送到段寄存器立即数不能直接传送到段寄存器。如如 MOV DS,1000H 是错误的。若要给是错误的。若要给DS赋赋1000H,由如下,由如下指令实现:指令实现: MOV AX,1000H MOV DS,AX (该指令可用于给段赋初值)(该指令可用于给段赋初值)(3) 源操作数和目标操作数不能同时为存储器寻源操作数和目标操作数不
28、能同时为存储器寻址址,如,如 MOV BX, 1000H是错误的。是错误的。 (4) 源操作数和目标操作数不能一个是字节,一源操作数和目标操作数不能一个是字节,一个是字个是字。比如。比如 MOV AL,BX 是错误的。是错误的。(5) 两个段寄存器之间不能直接传送两个段寄存器之间不能直接传送;寄存器寄存器CS、IP只能作源操作数只能作源操作数,不能作目的操作数;不能作目的操作数;如下列如下列指令是错误的:指令是错误的: MOV DS,ES MOV CS,AX指出下列指令的错误指出下列指令的错误(1)MOV CX,DL (2)MOV IP,AX(3)MOV ES,1234H (4)MOV ES,
29、DS(5)MOV AL,300 (6)MOV SP,AX(7)MOV 20H,AH2 2数据交换指令数据交换指令XCHGXCHGl语句格式语句格式:XCHG OPD,OPSl功能功能:将源地址与目的地址中的内容互换。:将源地址与目的地址中的内容互换。即(即(OPD)OPS,(,(OPS)OPD。l【例例3.2】寄存器与存储器之间数据交换寄存器与存储器之间数据交换。MOV AX,5678H;(;(AX)=5678HMOV BX,0FFFFH ;(;(BX)=0FFFFHXCHG AX,BX;(;(AX)=0FFFFH ,(,( BX)=5678H3 3查表转换指令查表转换指令 XLATXLAT格
30、式格式:XLAT ;AL DS:(BX+AL)功能:功能:XLAT指令以转换表中的一个字节来代指令以转换表中的一个字节来代换换AL寄存器中的内容,寄存器中的内容,将(将(BXBX)为首址(为首址(ALAL)为位移量的字节存储单元中的数据送为位移量的字节存储单元中的数据送ALAL寄存寄存器。器。即(即( BX+ALBX+AL)ALAL。可用于可用于码转换码转换。 其中其中DS:BX指向转换指向转换表的首址表的首址,转换前,转换前AL内容为内容为序号序号,转换后,转换后AL内容为对应的内容为对应的码码。练习:当前数据段中从练习:当前数据段中从DISP(=2000H)单元开始连续存单元开始连续存放十
31、六进制数码放十六进制数码0F的的LED显示代码,编程将显示代码,编程将“8”字的显示代码送到字的显示代码送到CL中中。 LEA BX,DISPMOV AL,8XLATMOV CL,AL3.2.1.2 3.2.1.2 堆栈操作指令堆栈操作指令l1进栈指令进栈指令PUSHl2出栈指令出栈指令POP1 1进栈指令进栈指令PUSHPUSHl语句格式:语句格式: PUSH OPSPUSH OPSl功能:功能:将寄存器、段寄存器或存储器中的一个将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减字数据压入堆栈,堆栈指针减2 2。l即:(即:(SPSP)SPSP,(,(OPSOPS)158158SP
32、SP; (SPSP)SPSP, (OPSOPS)7070SPSP。2 2出栈指令出栈指令POPPOP语句格式:语句格式: POP OPDPOP OPD功能:功能: 将栈顶元素弹出送至某一寄存器、段寄将栈顶元素弹出送至某一寄存器、段寄存器(除存器(除CSCS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2 2。 从从POPPOP指令功能可看出,该指令为指令功能可看出,该指令为PUSHPUSH指令指令的逆过程。的逆过程。即:即:( SPSP)(OPDOPD)7070(SPSP)+ +SPSP; (SPSP)(OPDOPD)158158(SPSP)+ +SPSP。返回本节返回本节已知已知SS=FF
33、A0H,SP=00B0H,画图说明执行下画图说明执行下列指令时,堆栈区和列指令时,堆栈区和SP的内容如何变化?的内容如何变化?lMOV AX,8057HlPUSH AXlMOV AX,0F79HlPUSH AXlPOP BXlPOP CX3.2.1.4 3.2.1.4 地址传送指令地址传送指令l1 1传送偏移地址指令传送偏移地址指令 LEALEAl2 2传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LDSLDSl3 3传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LESLES1 1传送偏移地址指令传送偏移地址指令 LEALEA语句格式语句格式: LEA OPDLEA OPD
34、,OPSOPS功能功能:主存按源地址的寻址方式计算偏移地址,:主存按源地址的寻址方式计算偏移地址,将偏移地址送入指定寄存器。将偏移地址送入指定寄存器。【例【例3.43.4】主存偏移地址的获取。主存偏移地址的获取。MOV BXMOV BX,0100H0100H ;(;(BXBX)=0100H=0100HMOV SIMOV SI,0210H 0210H ;(;(SISI)=0210H=0210HLEA CXLEA CX,BX+SI BX+SI ;CX=?CX=?(CXCX)=0310H=0310H3.2.1.5 3.2.1.5 输入输出指令输入输出指令l1输入指令输入指令INl2输出指令输出指令O
35、UT l接口是连接主机和外设的桥梁。接口是连接主机和外设的桥梁。 CPU接口电路接口电路 I/O设备设备I/OI/O接口的基本结构接口的基本结构l每个接口电路包含每个接口电路包含一组寄存器一组寄存器:数据输入:数据输入寄存器、数据输出寄存器、状态寄存器、寄存器、数据输出寄存器、状态寄存器、控制寄存器等。控制寄存器等。l通常称这些寄存器为通常称这些寄存器为I/OI/O端口端口(I/O PORT)(I/O PORT),每个端口有一个每个端口有一个端口地址端口地址。数据口DB数据状态口控制口ABCBCPU状态信息控制信息外设功能:功能:I/O指令指令IN和和OUT用于在用于在I/O端口和端口和AX或
36、或AL通用寄存器之间交换数据。通用寄存器之间交换数据。注注:端口地址范围是:端口地址范围是:0-FFFFH,所以用所以用8位或位或16位来表示。位来表示。例如:例如:IN AL,28H ;正确;正确 IN AL,03FCH ;错误;错误 注注:当端口地址为:当端口地址为 0-255 时时( 00-FFH ),可以用,可以用指令指令直接指定;直接指定;当端口地址当端口地址大于大于255 ( 00FFH ) 时,需将端口地址时,需将端口地址装入装入DX寄存器中寄存器中,再用,再用 IO 数据传送指令传送数据传送指令传送 改正改正:MOV DX, 03FCH IN AX,DX1 1输入指令输入指令I
37、NIN输入指令用来从输入指令用来从指定的外设寄存器指定的外设寄存器取信息送入取信息送入累加累加器器。它有四种形式:。它有四种形式:(1 1)语句格式:)语句格式:IN ALIN AL,PORT PORT 功能:(功能:(PORTPORT)ALAL(2 2)语句格式:语句格式:IN AXIN AX,PORTPORT 功能:(功能:(PORTPORT)AXAX(3 3)语句格式:语句格式:IN ALIN AL,DXDX 功能:(功能:( DXDX)ALAL(4 4)语句格式:语句格式:IN AXIN AX,DXDX 功能:(功能:( DXDX)ALAL2 2输出指令输出指令OUTOUT输出指令用来
38、把输出指令用来把累加器的内容送往指定的外设累加器的内容送往指定的外设存储器,它有四种形式:存储器,它有四种形式:(1)语句格式:)语句格式:OUT PORT,AL 功能:(功能:(AL)PORT(2)语句格式:语句格式:OUT PORT,AX 功能:(功能:(AX)PORT(3)语句格式:语句格式:OUT DX,AL 功能:(功能:(AL)DX(4)语句格式:语句格式:OUT DX,AX 功能:(功能:(AX)DX例如:例如:(1) IN AL,28H ;端口;端口28H的字节数据读出送的字节数据读出送AL。(2) OUT 15H, AL ;AL的数据写入端口的数据写入端口15H中中(3) M
39、OV DX, 03FCH IN AX,DX ;端口;端口03FCH的字数据读出送的字数据读出送AX 指出下列指令的错误指出下列指令的错误(1) XCHG SI,30H(2) PUSH AH(3) OUT DX,AH(4) IN AL,3FCH3.2.2 算术运算类指令算术运算类指令l3.2.2.1 加法指令加法指令l3.2.2.2 减运算指令减运算指令l3.2.2.3 乘运算指令乘运算指令l3.2.2.4 除运算指令除运算指令l3.2.2.5 符号扩展指令符号扩展指令 l3.2.2.6 十进制调整指令十进制调整指令返回本节返回本节 算术运算类指令有加、减、乘、除等,可进算术运算类指令有加、减、
40、乘、除等,可进行行8位、位、16位和位和32位的运算。参加运算的操作数位的运算。参加运算的操作数可以是二进制数和十进制数可以是二进制数和十进制数(BCD码码);这些数可;这些数可以是无符号数,也可以是带符号数。以是无符号数,也可以是带符号数。 算术运算指令的主要特点是执行结果影响标算术运算指令的主要特点是执行结果影响标志寄存器的状态标志位,对志寄存器的状态标志位,对编程有着重要的作用编程有着重要的作用。3.2.2.1 加法指令加法指令l1加加1指令指令INCl2加指令加指令ADDl3带进位加指令带进位加指令ADC1 1加加1 1指令指令INCINC语句格式语句格式:INC OPDINC OPD
41、功能:功能:将目的操作数加将目的操作数加1 1,结果送目的地址。,结果送目的地址。即即(OPDOPD)+1OPD+1OPD。INCINC指令是一个单操作数指令,操作数可以是寄存指令是一个单操作数指令,操作数可以是寄存器或存储器操作数。器或存储器操作数。如:如:INC BXINC BX,即(即(BXBX)+1BX+1BX。加加1 1指令可用于对指令可用于对计数器和地址指针计数器和地址指针进行调整。进行调整。 2 2加指令加指令ADDADD语句格式语句格式:ADD OPDADD OPD, OPS OPS功能功能:将目的操作数与源操作数相加,结果存:将目的操作数与源操作数相加,结果存入目的地址中,源
42、地址的内容不改变。入目的地址中,源地址的内容不改变。即(即(OPDOPD)+ +(OPSOPS)OPDOPD。注意:源操作数和目标操作数注意:源操作数和目标操作数不能同时为存储不能同时为存储单元,段寄存器不能进行算术运算单元,段寄存器不能进行算术运算。3 3带进位加指令带进位加指令ADCADC语句格式语句格式:ADC OPDADC OPD,OPSOPS功能功能:将目的操作数加源操作数再加低位进:将目的操作数加源操作数再加低位进位,结果送目的地址。位,结果送目的地址。即(即(OPDOPD)+ +(OPSOPS)+ +CFCF OPD OPD。【例【例3.3.2121】计算计算0234 4652H
43、+0234 4652H+0 0F0F0 F0F0HF0F0 F0F0HMOVMOV AXAX,4652H4652H;(;(AXAX)=4652H=4652HADDADD AXAX,0F0F0H0F0F0H;(;(AXAX)=3742H=3742H,CF=1CF=1MOVMOV DXDX,0234H0234H;(;(DXDX)=0234H=0234HADCADCDXDX,0F0F0H0F0F0H;(;(DXDX)=0F325H=0F325H,CF=0CF=0例如,现在有两个双精度字例如,现在有两个双精度字00127546H和和00109428H,其中被,其中被加数加数00127546H存放在存放
44、在DATA1为首的内存单元中,加数为首的内存单元中,加数00109428H存放在存放在DATA2为首的内存单元中。要求结果存放为首的内存单元中。要求结果存放在在DATA3为首的内存单元中。内存分配如右图所示。请写出相为首的内存单元中。内存分配如右图所示。请写出相应的程序段。应的程序段。MOV AX,DATA1ADD AX,DATA2MOV DATA3,AXMOV AX,DATA1+2ADC AX,DATA2+2MOV DATA3+2,AX00H10H94H28H00H12H75H 46H DATA1 DATA2 DATA33.2.2.2 减运算指令减运算指令l1减减1指令指令DECl2减指令减
45、指令SUBl3求补指令求补指令NEGl4带借位减指令带借位减指令 SBBl5比较指令比较指令 CMP1 1减减1 1指令指令DECDEC语句格式语句格式:DEC OPD DEC OPD 功能功能:将目的操作数减:将目的操作数减1 1,结果送目的地址。,结果送目的地址。即(即(OPDOPD)1OPD1OPD。DECDEC指令是一个单操作数指令是一个单操作数指令,指令,操作数可以是寄存器或存储器操作数操作数可以是寄存器或存储器操作数。如:如:DEC CX,DEC CX,即(即(CXCX)1CX1CX。减减1 1指令指令DECDEC也一般用于对也一般用于对计数器和地址指针计数器和地址指针的的调整。调
46、整。l2 2减指令减指令SUBSUB语句格式语句格式:SUB OPDSUB OPD,OPSOPS功能功能:目的操作数减源操作数,结果存于目:目的操作数减源操作数,结果存于目的地址,源地址内容不变。的地址,源地址内容不变。即(即(OPDOPD)()(OPSOPS)OPDOPD【例例3.223.22】减法运算。减法运算。MOVMOVAX AX ,5678H5678H;(;(AXAX)=5678H=5678HSUBSUBAX AX ,1234H1234H;(;(AXAX)=4444H=4444HMOVMOVBX BX ,3354H3354H;(;(BXBX)=3354H=3354HSUBSUBBX
47、BX ,3340H3340H;(;(BXBX)=0014H=0014Hl3 3求补指令求补指令NEGNEG语句格式语句格式:NEG OPDNEG OPD功能功能:将目的操作数的每一位求反(包括:将目的操作数的每一位求反(包括符号位)后加符号位)后加1 1,结果送目的地址。,结果送目的地址。即(即(OPDOPD)+1OPD+1OPD。l【例例3.3.2323】求补运算。求补运算。MOVMOVAXAX,0FF64H0FF64HNEGNEGALAL;(;(AXAX)=0FF9CH=0FF9CHSUBSUBALAL,9DH9DH;(;(AXAX)=0FFFFH=0FFFFHNEGNEGAXAX;(;(
48、AXAX)=0001H=0001HDECDECALAL;(;(AXAX)=0000H=0000HNEGNEGAXAX;(;(AXAX)=0000H=0000Hl4 4带借位减指令带借位减指令 SBBSBB语句格式语句格式:SBB OPD SBB OPD ,OPSOPS功能功能:目的操作数减源操作数再减低位借:目的操作数减源操作数再减低位借位位CFCF,结果送目的地址。结果送目的地址。即即(OPDOPD)(OPSOPS)CF OPDCF OPD5 5比较指令比较指令 CMPCMPl语句格式语句格式:CMP OPDCMP OPD,OPSOPSl功能功能:目的操作数减源操作数,结果只影响标志:目的操
49、作数减源操作数,结果只影响标志位,不送入目的地址。即(位,不送入目的地址。即(OPDOPD)()(OPSOPS)。)。【例【例3.3.2424】比较比较ALAL的内容数值大小。的内容数值大小。CMPCMPALAL,5050;(;(ALAL)5050JBJBBELOWBELOW ;(;(ALAL)50=50=50,(,( AL AL)50AL50AL BELOWBELOW:返回本节返回本节设设a、b、c均为双字数据,分别存放在首地址为均为双字数据,分别存放在首地址为X、Y、Z的存储单元中,它们的运算结果存入的存储单元中,它们的运算结果存入W单元。单元。阅读如下程序段,给出运算公式。阅读如下程序段
50、,给出运算公式。lMOV AX,XlMOV DX,X+2lADD AX,YlADC DX,Y+2lADD AX,24lADC DX,0lSUB AX,ZlSBB DX,Z+2lMOV W,AXlMOV W+2,DX 3.2.2.3 乘运算指令乘运算指令l1无符号数乘法指令无符号数乘法指令MULl2有符号乘指令有符号乘指令IMUL1 1无符号数乘法指令无符号数乘法指令MULMUL语句格式语句格式: MUL OPSMUL OPS功能功能: :l字节乘法:(字节乘法:(ALAL)* * (OPSOPS) AX AX,l字乘法:(字乘法:(AXAX) * * (OPSOPS) DX DX,AX AX
51、【例【例3.3.2525】无符号数无符号数0 0A3HA3H与与1111H H相乘。相乘。MOVMOV ALAL,0A3H0A3H ;(;(ALAL)=0A3H=0A3HMOVMOV BLBL, 11H 11H ;(;(BLBL)=11H=11HMULMUL BLBL ;(;(AXAX)=0AD3H=0AD3H2 2有符号乘指令有符号乘指令IMULIMUL语句格式:语句格式:IMUL OPSIMUL OPS功能功能:字节乘法:(:字节乘法:(ALAL)* *(OPSOPS)AXAX, 字乘法:(字乘法:(AXAX)* *(OPSOPS)DXDX、AXAX。注注:IMULIMUL指令除计算对象是
52、带符号二进制数指令除计算对象是带符号二进制数外,其他都与外,其他都与MULMUL一样,但计算结果不同。一样,但计算结果不同。【例【例3.3.2626】有符号数有符号数0 0B4HB4H与与1111H H相乘。相乘。MOVMOVALAL,0B4H0B4H ;(;(ALAL)=B4H=B4HMOVMOVBLBL,11H11H;(;(BLBL)=11H=11HIMULIMUL BLBL ;(;(AXAX)= =0 0FAF4HFAF4H3.2.2.4 除运算指令除运算指令l1无符号除指令无符号除指令DIVl2有符号有符号除指令除指令IDIVl1 1无符号除指令无符号除指令DIVDIV语句格式语句格式
53、:DIV OPSDIV OPS功能功能:字节除法:(字节除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数)字除法:字除法:(DXDX、AXAX)/ /(OPSOPS) AX AX(商)、商)、DXDX(余数)余数)【例【例3.3.2727】写出实现无符号数写出实现无符号数04000400H / H / 0 0B4HB4H运算的程运算的程序段。序段。MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBLBL,0B4H0B4H;(;(BLBL)=0B4H=0B4HDIVDIVBLBL ;商(商(ALAL)=05H
54、=05H,余数(余数(AHAH)=7CH=7CH 2 2有符号除指令有符号除指令IDIVIDIV语句格式语句格式:IDIV OPSIDIV OPS功能:功能:字节除法:(字节除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余数)余数)字除法:(字除法:(DXDX,AXAX)/ /(OPSOPS)AXAX(商)、商)、DXDX(余余数)数)【例【例3.3.2828】写出实现有符号数写出实现有符号数04000400H /0B4HH /0B4H运算的程序运算的程序段。段。MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBL
55、BL,0B4H0B4H;(;(BXBX)=0B4H=0B4HIDIVIDIV BLBL ;(;(ALAL)=0F3H=0F3H,(,(AHAH)=24H=24H3.2.2.5 符号扩展指令符号扩展指令 l1字节转换成字指令字节转换成字指令CBWl2将字转换成双字指令将字转换成双字指令CWDl1 1字节转换成字指令字节转换成字指令CBWCBW语句格式语句格式:CBWCBW功能功能:将:将ALAL中的符号位数据扩展至中的符号位数据扩展至AHAH。【例例3.3.2929】将字节数据扩展成字数据。将字节数据扩展成字数据。MOVMOVALAL,0A5H0A5H ;(;(ALAL)= =0 0A5HA5H
56、CBWCBW ;(;(AXAX)= =0 0FFA5HFFA5HADDADDALAL,70H70H;(;(ALAL)=15H=15HCBWCBW ;(;(AXAX)=0015H=0015Hl2 2将字转换成双字指令将字转换成双字指令CWDCWD语句格式语句格式:CWDCWD功能功能:将:将AXAX中的符号位数据扩展至中的符号位数据扩展至DX DX 。【例例3.3.3030】将字数据扩展成双字数据。将字数据扩展成双字数据。MOVMOVDXDX,0 0;(;(DXDX)=0=0MOVMOVAXAX,0FFABH0FFABH;(;(AXAX)= =0 0FFABHFFABHCWD CWD ;(;(D
57、XDX)=0FFFFH =0FFFFH (AXAX)= =0 0FFABHFFABH返回本节返回本节3.2.2.6 十进制调整指令十进制调整指令l1压缩压缩BCD码调整指令码调整指令 (1)加法的十进制调整指令加法的十进制调整指令DAA (2)减法的十进制调整指令减法的十进制调整指令DAS 在微机指令系统中,在微机指令系统中,压缩的压缩的 BCD码用码用 4 位二位二进制数表示一个十进制数位。每个字节表示两位进制数表示一个十进制数位。每个字节表示两位十进制数。十进制数。 由于在进行由于在进行 BCD 码的运算时,是通过执行二码的运算时,是通过执行二进制指令完成的,故这些指令的执行结果是二进进制
58、指令完成的,故这些指令的执行结果是二进制数,并非制数,并非BCD 码,因此系统提供了码,因此系统提供了BCD 码调码调整指令整指令,将二进制数结果调整为,将二进制数结果调整为BCD 码。码。 例如,例如,AL和和BL中都是压缩的中都是压缩的BCD码数据,码数据,相加求和。相加求和。 ADD AL,BL 假设假设(AL)=28H,(BL)=68H 0010 1000+0110 1000=1001 0000 执行执行ADD指令后指令后(AL)=90H,CF=0,AF=1,结果错误。,结果错误。 1 1. .加法的十进制调整指令加法的十进制调整指令DAADAA 格式:格式:DAA功能:功能:将将 A
59、L寄存器中的加运算结果调整为二位压缩型寄存器中的加运算结果调整为二位压缩型 BCD 码。此指令前必须执行两个压缩码。此指令前必须执行两个压缩BCD码的加运码的加运算,结果存放在算,结果存放在 AL中。中。调整的方法为:调整的方法为:(1)AF= 1或或 AL寄存器低寄存器低 4 位是十六进制数的位是十六进制数的AF,则则 AL 寄存器内容加寄存器内容加06H。(2)CF= l 或或 AL寄存器高寄存器高 4 位是十六进制数的位是十六进制数的AF,则则 AL 寄存器内容加寄存器内容加60H。注意注意:DAA指令除对指令除对 OF 标志无影响外,其他各标志位标志无影响外,其他各标志位都按结果置位。
60、都按结果置位。 例例3.31ADD AL,BL DAA 假设指令执行前假设指令执行前(AL)=28,(BL)=68 0010 1000+0110 1000=1001 0000 执行执行ADD指令后指令后(AL)=90,CF=0,AF=1,结,结果错误。果错误。 执行执行DAA指令时,由于指令时,由于AF=1,AL寄存器内容寄存器内容加加06H进行调整,使得进行调整,使得(AL)=96,结果正确。,结果正确。 2.2.减法的十进制调整指令减法的十进制调整指令DASDAS 格式:格式:DAS功能:功能:将将 AL寄存器中的减运算结果调整为二位压缩型寄存器中的减运算结果调整为二位压缩型 BCD 码。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国电建集团江西省水电工程局有限公司招聘备考题库及参考答案详解
- 2026年广东煤炭地质二0一勘探队招聘备考题库有答案详解
- 2026年太原太航德克森自控工程股份有限公司招聘备考题库及一套参考答案详解
- 2026年广州国投悦康美邸养老服务有限公司招聘备考题库及1套完整答案详解
- 2026年北京京糖酒类经营有限公司招聘备考题库及一套参考答案详解
- 2026年厦门科方圆工贸有限公司招聘备考题库及完整答案详解一套
- 2026年北京机械工业自动化研究所有限公司招聘备考题库及参考答案详解
- 2026年太仓市第一人民医院第一批事业编制公开招聘专业技术人员16人备考题库含答案详解
- 2026年平潭综合实验区公开招聘高端人才备考题库完整答案详解
- 2026年义乌市中心医院医共体上溪院区招聘备考题库及1套参考答案详解
- 2026年上半年西藏省中小学教师资格考试(笔试)备考题库及参考答案(完整版)
- (一模)长春市2026届高三质量监测(一)历史试卷(含答案)
- 2026届江苏省徐州侯集高级中学高一数学第一学期期末学业质量监测模拟试题含解析
- 基坑回填施工措施方案
- 电子商务团队年度总结课件
- 2026年渤海银行信贷审批官信贷审批考试题集含答案
- 11251《操作系统》国家开放大学期末考试题库
- 2025年安徽省普通高中学业水平合格性考试数学试卷(含答案)
- 2025辽宁省文体旅产业发展集团有限责任公司招聘8人笔试重点题库及答案解析
- 社交媒体运营主管工作绩效评定表
- 辽宁省抚顺市省重点高中协作校2026届高一数学第一学期期末质量检测试题含解析
评论
0/150
提交评论