《第二章 实模式程序设计(汇编语言)2.ppt》由会员分享,可在线阅读,更多相关《第二章 实模式程序设计(汇编语言)2.ppt(113页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2.2指令系统指令系统 n概述概述u特点特点特点特点:把数据从计算机的一个部位传送到另一部位把数据从计算机的一个部位传送到另一部位 u传送类指令中有传送类指令中有传送类指令中有传送类指令中有2 2个操作数个操作数个操作数个操作数 :源操作数和目的操作数源操作数和目的操作数源操作数是指发送部位的操作数源操作数是指发送部位的操作数目的操作数是指接收部位的操作数目的操作数是指接收部位的操作数u指指指指令令令令操操操操作作作作:将将源源操操作作数数的的内内容容送送到到目目的的操操作作数数,交交换换指令除外指令除外 u指指指指令令令令分分分分类类类类:数数据据传传送送、地地址址传传送送、标标志志传传送送
2、、输输入入输输出和交换出和交换 n2.2.1数据传送类指令数据传送类指令 12.2指令系统指令系统 n数据传送类指令数据传送类指令u数据传送指令数据传送指令数据传送指令数据传送指令指令格式:指令格式:MOV DST,SRC;DSTSRCMOV指指 令令 把把 源源 操操 作作 数数(source)传传 送送 到到 目目 的的 操操 作作 数数(destination)设指令执行前,设指令执行前,(AX)=2345H,(BX)=1111H。指令指令“MOV AX,BXMOV AX,BX”执行后,执行后,(AX)=1111H,(BX)=1111H。源操作数源操作数BX的内容被复制到的内容被复制到A
3、X寄存器内,源操作数寄存器内,源操作数BX的内容的内容保持不变,目的操作数保持不变,目的操作数AX的原内容被覆盖。的原内容被覆盖。n2.2.1数据传送类指令数据传送类指令 22.2指令系统指令系统 n数据传送类指令数据传送类指令u数据传送指令数据传送指令指令格式:指令格式:指令格式:指令格式:MOV DST,SRCMOV DST,SRC;DSTSRC指指指指令令令令操操操操作作作作:把把一一个个字字节节或或一一个个字字操操作作数数从从源源传传送送到到目目的的地地,源源操操作作数数可可以以是是寄寄存存器器、段段寄寄存存器器、存存储储器器以以及及立立即即操操作作数数,目目的的操操作作数数可可以以是
4、是寄寄存存器器、存存储器和段寄存器储器和段寄存器数据传送方向:图数据传送方向:图2-2-1。n2.2.1数据传送类指令数据传送类指令 32.2指令系统指令系统 数据传送方向:图数据传送方向:图2-2-1。注意:注意:l立即操作数、段寄存立即操作数、段寄存器器CS只能作为源操作只能作为源操作数;数;l源、目的操作数只能源、目的操作数只能有一个是存储器操作有一个是存储器操作数;数;l立即操作数不能直接立即操作数不能直接送给段寄存器。送给段寄存器。n2.2.1数据传送类指令数据传送类指令 42.2指令系统指令系统 MOV指令有九种形式:指令有九种形式:lMOV REG,REG;(REG)(REG)l
5、MOV REG16,SEGREG;(REG16)(SEGREG)lMOV REG,MEM ;(REG)(MEM)lMOV REG,IMM ;(REG)IMMlMOV MEM,REG ;(MEM)(REG)lMOV MEM16,SEGREG ;(MEM16)(SEGREG)lMOV MEM,IMM ;(MEM)IMMlMOV SEGREG,REG16 ;(SEGREG)(REG16),CS除外除外lMOV SEGREG,MEM16 ;SEGREGMEM16,CS除外除外n2.2.1数据传送类指令数据传送类指令 52.2指令系统指令系统 指令实例指令实例:例例2-2-1-1 MOVMOV指令举例(
6、寄存器、寄存器操作数)指令举例(寄存器、寄存器操作数):正确:正确:MOV CL,DH ;字节传送指令,字节传送指令,DH寄存器内容送入寄存器内容送入CL MOV AX,CS ;字传送指令,字传送指令,CS寄存器内容送入寄存器内容送入AX MOV SS,CX ;字传送指令,字传送指令,CX寄存器内容送入寄存器内容送入SS错误:错误:MOV CL,DX;操作数类型不匹配操作数类型不匹配 MOV CS,AX;CS寄存器不能作为目的操作数寄存器不能作为目的操作数 MOV DS,CS;不能同时为段寄存器不能同时为段寄存器n2.2.1数据传送类指令数据传送类指令 62.2指令系统指令系统 指令实例指令实
7、例:例例2-2-1-2 MOVMOV指令举例(立即数、寄存器操作数)指令举例(立即数、寄存器操作数):正确:正确:MOV AL,30H;字节传送指令,执行后(字节传送指令,执行后(AL)=30H MOV AX,30H;字传送指令,执行后(字传送指令,执行后(AX)=0030H MOV AL,-5 ;字节传送指令,执行后(字节传送指令,执行后(AL)=0FBH MOV AX,-5 ;字传送指令,执行后(字传送指令,执行后(AX)=0FFFBH错误:错误:MOV 30H,AL;立即数不能用作目的操作数立即数不能用作目的操作数 MOV AL,300H ;源操作数超出范围源操作数超出范围n2.2.1数
8、据传送类指令数据传送类指令 72.2指令系统指令系统 指令实例指令实例:例例2-2-1-3 MOVMOV指令举例(存储器、寄存器操作数)指令举例(存储器、寄存器操作数):正确:正确:MOVBP,BL;字节传送指令,字节传送指令,BL寄存器内容送寄存器内容送SS:BP MOVBX,AX;字传送指令,字传送指令,AL内容送内容送DS:BX,;AH内容送内容送DS:BX+1 MOVDX,SI;字传送指令,字传送指令,DS:SI内容送入内容送入DL,;DS:SI+1内容送入内容送入DH错误:错误:假设变量假设变量X_BYTE用用DB定义定义 MOV DX,BL;DX寄存器不能用来寄存器间接寻址寄存器不
9、能用来寄存器间接寻址 MOV X_BYTE,AX ;操作数类型不匹配操作数类型不匹配n2.2.1数据传送类指令数据传送类指令 82.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4 MOVMOV指令举例(存储器、立即数操作数)指令举例(存储器、立即数操作数):MOV mem data ;B/WData可以是字节立即数,也可以是字立即数。可以是字节立即数,也可以是字立即数。Mem-必须作数据类型说明。(必须作数据类型说明。(BYTE PTR-字节操作、字节操作、WORD PTR-字操作)字操作)例:例:2-2-1-4-1 MOV BYTE PTR BX,20H ;说明目的存储器操作数说
10、明目的存储器操作数MEM是字节单元。是字节单元。设设DS=3000H,BX=2200H,物理地址物理地址=30000+2200=32200H执行前执行前:(:(32200H)=ACH执行后:执行后:(32200H)=20Hn2.2.1数据传送类指令数据传送类指令 92.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4 MOVMOV指令举例(存储器、立即数操作数)指令举例(存储器、立即数操作数):MOV mem data ;B/WData可以是字节立即数,也可以是字立即数。可以是字节立即数,也可以是字立即数。Mem-必须作数据类型说明。(必须作数据类型说明。(BYTE PTR-字节操作
11、、字节操作、WORD PTR-字操作)字操作)例:例:2-2-1-4-2 MOV WORD PTR BX,234BH ;说明目的操作数存储单元是字单元。说明目的操作数存储单元是字单元。设设DS=3000H,BX=1000H,物理地址物理地址=31000H执行前执行前:(:(31000H)=45H (31001H)=74H执行后:执行后:(31000H)=4BH(31001H)=23Hn2.2.1数据传送类指令数据传送类指令 102.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4例例2-2-1-4-3:某一数据段:某一数据段:DATA_SEG SEGMENT ;数据段开始数据段开始A
12、REA1 DB 14H,3BHAREA2 DB 3 DUP(0)ARRAY DW 3100H,01A6HSTRING DB GOODDATA_SEG ENDS ;数据段结束数据段结束n2.2.1数据传送类指令数据传送类指令 112.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4例例2-2-1-4-3:某一数据段:某一数据段:1、数数 据据 段段 以以 段段 说说 明明 符符SEGMENT开开始始,以以ENDS结结束束,DATA_SEG 是是数数据据段段的的段名。段名。2、DB伪操作符是定义字节变伪操作符是定义字节变量,说明其后每一个操作占一个量,说明其后每一个操作占一个字节。字节。
13、3、DW伪操作符是定义字变伪操作符是定义字变量,说明其后每一个操作占一个量,说明其后每一个操作占一个字。字。n2.2.1数据传送类指令数据传送类指令 122.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4例例2-2-1-4-3:某一数据段:某一数据段:4、DUP是是复复制制操操作作符符,它它前前面面的的3表表示示在在存存储储器器中中保保留留3个个字节单元,且初值是字节单元,且初值是0。5、符号地址:、符号地址:AREA1的偏移地址为的偏移地址为0000H AREA2的偏移地址为的偏移地址为0002H ARRAY的的 偏偏 移移 地地 址址 为为 0005H STRING的偏移地址为
14、的偏移地址为0009Hn2.2.1数据传送类指令数据传送类指令 132.2指令系统指令系统 指令实例指令实例:例:例2-2-1-4-5:MOV DXMOV DX,OFFSET ARRAYOFFSET ARRAY;将将ARRAY的的偏偏移移地地址址送送DX寄寄存存器器中中,OFFSET为为属属性性操操作作符符,表表示示应应把把后后面面的的符符号号地地址址的的值值作作为为操操作作数数(DX)=0005HMOV ALMOV AL,AREA1AREA1;ALAREA1中的内容中的内容14HMOV AREA2MOV AREA2,ALAL;0002H单元单元14Hn2.2.1数据传送类指令数据传送类指令
15、142.2指令系统指令系统 使用使用MOV指令须注意:指令须注意:MOVMOVMOVMOV指令的使用限制指令的使用限制指令的使用限制指令的使用限制:源操作数与目的操作数可以是字节、字或双字,但必须有源操作数与目的操作数可以是字节、字或双字,但必须有 相同的类型;相同的类型;源操作数与目的操作数不能同时为存储器操作数;源操作数与目的操作数不能同时为存储器操作数;目的操作数不能是立即数;目的操作数不能是立即数;FLAGS、IP不能用作操作数。不能用作操作数。对于段寄存器作为操作数的对于段寄存器作为操作数的对于段寄存器作为操作数的对于段寄存器作为操作数的MOVMOVMOVMOV指令指令指令指令:源操
16、作数与目的操作数不能同时为段寄存器;源操作数与目的操作数不能同时为段寄存器;目的操作数是段寄存器时,源操作数只能是寄存器或存储目的操作数是段寄存器时,源操作数只能是寄存器或存储 器,不能是立即数;器,不能是立即数;CS不能用作目的操作数。不能用作目的操作数。n2.2.1数据传送类指令数据传送类指令 15n4.2.1数据传送类指令数据传送类指令 2.2指令系统指令系统 uu进栈指令进栈指令进栈指令进栈指令指令格式:指令格式:lPUSH SRC ;SP-1 SRCH,SP-2 SRCL,SPSP-2 ;SRC 为为REG16或或MEM16 或或SEGREGlPUSHF ;SP-1 FLAGH,SP
17、-2 FLAGL,SPSP-2 指指令令操操作作:该该该该类类类类指指指指令令令令可可可可将将将将1616位位位位寄寄寄寄存存存存器器器器、存存存存储储储储器器器器相相相相邻邻邻邻两两两两单单单单元元元元、段段段段寄寄寄寄存存存存器器器器和和和和标标标标志志志志寄寄寄寄存存存存器器器器的的的的内内内内容容容容压压压压入入入入堆堆堆堆栈栈栈栈栈栈栈栈顶顶顶顶。该该该该类类类类指指指指令令令令一一一一般般般般仅仅仅仅给给给给出出出出源源源源操操操操作作作作数数数数,且且且且都都都都是是是是字字字字信信信信息息息息,目目目目的的的的操操操操作作作作数数数数被被被被操操操操作作作作助助助助记记记记符符
18、符符隐隐隐隐含含含含着着着着。而而而而标标标标志志志志寄寄寄寄存存存存器器器器的的的的内内内内容容容容进进进进栈栈栈栈则则则则源源源源和和和和目目目目的的的的都都都都是是是是被被被被操操操操作作作作助助助助记符隐含着。记符隐含着。记符隐含着。记符隐含着。n2.2.1数据传送类指令数据传送类指令 16n4.2.1数据传送类指令数据传送类指令 2.2指令系统指令系统 uu进栈指令进栈指令进栈指令进栈指令例例2-2-1-5PUSH AXPUSH AX执行前:执行前:SP=2500H SS=5000H AX=3125H指令执行:指令执行:首先首先SPSP-1(SP=24FFH),),AH(31H)24
19、FFH单元单元然后然后SPSP-1(SP=24FEH),),AL(25H)24FEH单元单元最后最后SP=24FEH,比操作前减比操作前减2n2.2.1数据传送类指令数据传送类指令 172.2指令系统指令系统 指令实例指令实例:例:例2-2-1-6MOV AX,5000H;AX5000HMOV SS,AX ;SSAX,设置堆栈段为,设置堆栈段为5000HMOV SP,1000H ;SP1000H,设置堆栈指针为,设置堆栈指针为1000HPUSHF ;SP-1 FLAGH、;SP-2 FLAGL、SPSP-2PUSH AX ;SP-1 AH、SP-2 AL、;SPSP-2PUSH DS ;SP-
20、1 DSH、SP-2 DSL、;SPSP-2n2.2.1数据传送类指令数据传送类指令 182.2指令系统指令系统 u出栈指令出栈指令出栈指令出栈指令指令格式:指令格式:lPOP DST;DSTL SP,DSTHSP+1,SPSP+2;DST为为REG16或或MEM16 或或SEGREGlPOPF ;FLAGL SP,FLAGHSP+1,;SPSP+2指指令令操操作作:该该类类指指令令可可将将栈栈顶顶内内容容(字字信信息息占占两两个个单单元元)弹弹出出送送到到16位位寄寄存存器器、段段寄寄存存器器(不不允允许许是是CS)、存存储储器器相相邻邻两两单单元元或或标标志志寄寄存存器器中中,源源操操作作
21、数数被被助助记记符符隐隐含含,目目的的操操作作数数被被显显式式给给出出。它它是是进进栈指令的逆操作。栈指令的逆操作。n2.2.1数据传送类指令数据传送类指令 192.2指令系统指令系统 指令实例指令实例:例:例2-2-1-7POP BX 执行前:执行前:SS=5000H,SP=1000H,BX=75C1H过程:过程:1、BLSS:1000H所指单元的内容所指单元的内容6BH,SPSP+1 2、BHSS:1001H所指单元的内容所指单元的内容48H,SPSP+1最后:最后:SP=1002H,BX=486BHn2.2.1数据传送类指令数据传送类指令 202.2指令系统指令系统 指令实例指令实例:例
22、:例2-2-1-8在在子子程程序序和和中中断断服服务务程程序序中中,保保护护现现场场和和恢恢复复现现场场时时,要用入栈和出栈指令。要用入栈和出栈指令。如:如:PUSH AX;保护保护AX的内容的内容 PUSH BX;保保护护BX的的内内容容 ;此此程程序序段段要要用用到到AX 和和BX,所以在所以在 之前要保存原先内容。之前要保存原先内容。POP BX;恢复恢复BX的原先的内容。的原先的内容。POP AX;恢复恢复AX的原先的内容。的原先的内容。n2.2.1数据传送类指令数据传送类指令 212.2指令系统指令系统 指令实例指令实例:例:例2-2-1-9在在子子程程序序和和中中断断服服务务程程序
23、序中中,常常用用PUSHF和和POPF保保护护和和恢恢复复需需要要的的标标志志位位,利利用用这这两两条条指指令令还还可可以以方方便便地地改改变变标标志志寄寄存存器器中中任任一一位位的的状状态态。如如8086/8088指指令令系系统统中中没没有有能能直直接接修修改改TF标标志志的指令,可用以下程序来实现的指令,可用以下程序来实现TF的改变:的改变:如:如:PUSHF POP AX ;标志寄存器内容送标志寄存器内容送AX.OR AH,01H ;将将TF位置位置1 PUSH AX POPF ;AX的内容送标志寄存器的内容送标志寄存器。n2.2.1数据传送类指令数据传送类指令 PSW的标志位的标志位O
24、FDFIFTFSFZFAFPFCF22u标志寄存器传送指令标志寄存器传送指令有有两两条条标标志志寄寄存存器器传传送送指指令令,指指令令只只涉涉及及标标志志寄寄存存器的器的低低8位,而对高位,而对高8位没有影响。位没有影响。lLAHF(Load AH With Flags)将标志寄存器的将标志寄存器的低低8位送位送AHlSAHF(Store AH Into Flags);将将AH的内容送标志寄存器的内容送标志寄存器的的低低8位,位,它的执行刷新了它的执行刷新了SF,ZF,AF,PF,CF标志位。标志位。2.2指令系统指令系统 n2.2.1数据传送类指令数据传送类指令 PSW的标志位的标志位OFD
25、FIFTFSFZFAFPFCF232.2指令系统指令系统 n地址传送指令地址传送指令8086/8088有三种专门传送地址的指令有三种专门传送地址的指令:1.传送偏移地址到寄存器;传送偏移地址到寄存器;2.传送进入数据段的地址指针;传送进入数据段的地址指针;3.传送进入附加段的地址指针。传送进入附加段的地址指针。段地址和偏移地址也称为地址指针。段地址和偏移地址也称为地址指针。n2.2.1数据传送类指令数据传送类指令 242.2指令系统指令系统 u传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器指令格式指令格式:LEA REG16LEA REG16,MEMMEM指指
26、令令操操作作:这这里里源源操操作作数数必必须须是是存存储储器器操操作作数数,目目的的操操作作数数必必须须是是16位位寄寄存存器器,指指令令意意义义是是将将源源操操作作数数的的偏偏移移地地址址送送任任一一16位位寄寄存存器器。该该指指令令通通常常用用来来往往某某个个REG16中中设设置置偏偏移移地地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。指令实例指令实例指令实例指令实例:例例2-2-1-9-1 假设变量假设变量X的偏移地址为的偏移地址为048CH,LEA DX,XLEA DX,X ;执行后,执行后,DX=048CH 假设假设BP=1820H,SI=0068
27、H LEA BX,4BPSILEA BX,4BPSI ;执行后执行后,BX=4+1820H+0068H=188CHn2.2.1数据传送类指令数据传送类指令 252.2指令系统指令系统 u传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器指令格式指令格式:LEA REG16LEA REG16,MEMMEM指指令令操操作作:这这里里源源操操作作数数必必须须是是存存储储器器操操作作数数,目目的的操操作作数数必必须须是是16位位寄寄存存器器,指指令令意意义义是是将将源源操操作作数数的的偏偏移移地地址址送送任任一一16位位寄寄存存器器。该该指指令令通通常常用用来来往往某某个
28、个REG16中中设设置置偏偏移移地址的初值,以便从此地址开始存取多个数据。地址的初值,以便从此地址开始存取多个数据。指令实例指令实例指令实例指令实例:例例2-2-1-9-2 设设SI=1000H,DS=5000H,(51000H)=1234H LEA BX,SILEA BX,SI ;执行后执行后,BX=1000H MOV BXMOV BX,SISI;执行后,执行后,BX=1234H n2.2.1数据传送类指令数据传送类指令 262.2指令系统指令系统 u传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器指令格式指令格式:LEA REG16,MEM指指令令操操作作:
29、这这里里源源操操作作数数必必须须是是存存储储器器操操作作数数,目目的的操操作作数数必必须须是是16位位寄寄存存器器,指指令令意意义义是是将将源源操操作作数数的的偏偏移移地地址址送送任任一一16位位寄寄存存器器。该该指指令令通通常常用用来来往往某某个个REG16中中设设置置偏偏移移地地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。指令实例指令实例指令实例指令实例:例例2-2-1-9-3下面两条指令等价,取下面两条指令等价,取下面两条指令等价,取下面两条指令等价,取TABLETABLE的偏移地址,并送的偏移地址,并送的偏移地址,并送的偏移地址,并送BXBX中中中中
30、。LEA BX,TABLELEA BX,TABLE MOV MOV BXBX,OFFSET OFFSET TABLETABLE ;OFFSET返返回回变变量或标号的偏地址。量或标号的偏地址。n2.2.1数据传送类指令数据传送类指令 272.2指令系统指令系统 u传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器传送偏移地址到寄存器指令格式指令格式:LEA REG16LEA REG16,MEMMEM指指令令操操作作:这这里里源源操操作作数数必必须须是是存存储储器器操操作作数数,目目的的操操作作数数必必须须是是16位位寄寄存存器器,指指令令意意义义是是将将源源操操作作数数的的偏偏移移地地
31、址址送送任任一一16位位寄寄存存器器。该该指指令令通通常常用用来来往往某某个个REG16中中设设置置偏偏移移地地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。指令实例指令实例指令实例指令实例:例例2-2-1-9-4 LEA BXLEA BX,BX+SI+0F62BX+SI+0F62 执行前:执行前:BX=0400H,SI=003CH 执行后:执行后:BX=0400H+003CH+0F62H=139EH n2.2.1数据传送类指令数据传送类指令 282.2指令系统指令系统 u传送进入数据段的地址指针传送进入数据段的地址指针传送进入数据段的地址指针传送进入数据段的
32、地址指针 地址传送指令地址传送指令地址传送指令地址传送指令LDS,LESLDS,LESLDS,LESLDS,LES 地址传送指令从存储器取出地址传送指令从存储器取出4B,前面前面(两个低字节两个低字节)的的2B送入指定的寄存器,送入指定的寄存器,后面后面(两个高字节两个高字节)的的2B送入由指令操作码包含的段寄存器。送入由指令操作码包含的段寄存器。LDS REG16,MEM32LDS REG16,MEM32 ;从存储器取出从存储器取出4B,送入送入REG16和和DS LES REG16,MEM32LES REG16,MEM32 ;从存储器取出从存储器取出4B,送入送入REG16和和ES例例例例
33、2-2-1-10-12-2-1-10-1将双字指针送到寄存器将双字指针送到寄存器将双字指针送到寄存器将双字指针送到寄存器和和和和DSDS指令指令指令指令 设设DS=1200H,(,(12450H)=F346H,(12452H)=0A90H LDS SILDS SI,450H450H;源物理地址源物理地址=12000H+450H=12450H 执行后:执行后:SI=F346H,DS=0A90Hn2.2.1数据传送类指令数据传送类指令 292.2指令系统指令系统 u传送进入数据段的地址指针传送进入数据段的地址指针传送进入数据段的地址指针传送进入数据段的地址指针 地址传送指令地址传送指令地址传送指令
34、地址传送指令LDS,LESLDS,LESLDS,LESLDS,LES 地址传送指令从存储器取出地址传送指令从存储器取出4B,前面前面(两个低字节两个低字节)的的2B送入指定的寄存器,送入指定的寄存器,后面后面(两个高字节两个高字节)的的2B送入由指令操作码包含的段寄存器。送入由指令操作码包含的段寄存器。LDS REG16,MEM32LDS REG16,MEM32 ;从存储器取出从存储器取出4B,送入送入REG16和和DS LES REG16,MEM32LES REG16,MEM32 ;从存储器取出从存储器取出4B,送入送入REG16和和ES 例例例例2-2-1-10-2 2-2-1-10-2
35、将双字指针送寄存器和将双字指针送寄存器和将双字指针送寄存器和将双字指针送寄存器和ESES指令指令指令指令 设设DS=0100H,BX=0020H,(01020H)=0300H,(01022H)=0500H LES DILES DI,BXBX ;源物理地址源物理地址=01000+0020=01020H 执行后:执行后:DI=0300H,ES=0500H n2.2.1数据传送类指令数据传送类指令 302.2指令系统指令系统 n交换类指令交换类指令u交换指令交换指令交换指令交换指令指令格式指令格式:XCHG DST,SRC;DSTSRC指指令令操操作作:该该指指令令可可实实现现一一个个字字节节或或一
36、一个个字字的的源源操操作作数数与与目目的的操操作作数数的的交交换换。交交换换能能在在寄寄存存器器之之间间、寄存器与存储器之间进行。寄存器与存储器之间进行。三种具体形式:三种具体形式:lXCHG REG,REG ;REGREGlXCHG REG,MEM ;REGMEMlXCHG MEM,REG ;MEMREGn2.2.1数据传送类指令数据传送类指令 312.2指令系统指令系统指令实例:例指令实例:例指令实例:例指令实例:例2-2-1-112-2-1-11XCHG AH,CL ;AHCLXCHG BFF1,AX ;(BFF1+1、BF1)AXXCHG BX,COUNT SI;BX(COUNT SI
37、+1、COUNT SI)例如,(例如,(例如,(例如,(AXAX)=5678H=5678H XCHG AH,AL XCHG AH,AL;(;(;(;(AXAX)=7856H=7856H指指令令说说明明:BFF1在在本本节节为为字字变变量量,BFF1+1、BFF1、COUNT SI+1、COUNT SI分分别别表表示示以以它它们们为为偏偏移移地地址址的的存存储储单单元元的的内内容容。交交换换指指令令的的使使用用注注意意:不不能能在在两两个个存存储储单单元元之之间间直直接接交交换换数数据,段寄存器和立即数不能作为操作数。据,段寄存器和立即数不能作为操作数。n2.2.1数据传送类指令数据传送类指令
38、322.2指令系统指令系统uu换码指令(查表转换指令)换码指令(查表转换指令)换码指令(查表转换指令)换码指令(查表转换指令)指令格式:指令格式:l lXLAT LABELXLAT LABEL ;LABEL:表格首地址表格首地址,为可读性而设为可读性而设l lXLATXLAT;l指令操作:完成一个字节的查表转换。它将数据段中偏移地址为指令操作:完成一个字节的查表转换。它将数据段中偏移地址为BX与与AL寄存器之和的存储器单元的内容送入寄存器之和的存储器单元的内容送入AL.(将将BX指定的缓冲区中指定的缓冲区中AL指定的位移处的数据取出送到指定的位移处的数据取出送到AL。这是隐含寻址方式,默认使用
39、这是隐含寻址方式,默认使用BX,AL寄存器。)寄存器。)使用使用XLAT前的前的准备工作:准备工作:1、建立一个表格,建立一个表格,且且BXBX表首表首地址地址 2、ALAL位位移移量量(距距表表首首地地址址的的位位移移),因因为为ALAL是是8 8位位的的,所所以以表表格格长长度度不不超过超过256256 3、执行执行XLAT,转换后的代码值转换后的代码值AL。即:即:ALDS:BX+ALALDS:BX+ALn2.2.1数据传送类指令数据传送类指令 332.2指令系统指令系统指令实例:例如指令实例:例如4-2-1-12 (完成功能:(完成功能:ALDS:BX+ALALDS:BX+AL)若若十
40、十六六进进制制数数字字0F的的LED七七段段码码对对照照表表如如表表所所示示,试试用用XLATXLAT指令求数字指令求数字5的七段码值。的七段码值。n2.2.1数据传送类指令数据传送类指令 程序:设程序:设DS=4000H,表首地址表首地址TABLE=0200HTABLE DB 40H,79H,24H,DB 30H,19H,12H,DB 02H,78H .MOV AL,5;AL数字数字5的位移的位移量量MOV BX,OFFSET TABLE ;BX表格首地址表格首地址XLAT TABLE;查表得查表得AL=12H342.2指令系统指令系统 n输入输出类指令输入输出类指令 uu输入指令输入指令输
41、入指令输入指令指令格式:指令格式:l lIN AL,PORT8IN AL,PORT8;字节输入字节输入:ALPORT8 (8位端口位端口);地址为地址为PORT的端口中将一字节数据读入的端口中将一字节数据读入AL中。中。l lIN AX,PORT8IN AX,PORT8;字输入字输入:ALPORT8,AHPORT8+1 ;从两个连续端口中将一个字读入从两个连续端口中将一个字读入AX累加器中。累加器中。l lIN AL,DX;IN AL,DX;字节输入字节输入l ;:其中其中DX的内容为外设地址,范围的内容为外设地址,范围0000-0FFFFH,共共64K个个I/O端口。端口。l lIN AX,
42、DXIN AX,DX;字输入字输入指令操作:将端口数据读入到指令操作:将端口数据读入到指令操作:将端口数据读入到指令操作:将端口数据读入到ALAL(字节)或字节)或字节)或字节)或AXAX(字)。字)。字)。字)。n2.2.1数据传送类指令数据传送类指令 352.2指令系统指令系统u输出指令输出指令指令格式:指令格式:l lOUT OUT PORT8,ALPORT8,AL;字节输出:字节输出:PORT8ALl lOUT PORT8,AXOUT PORT8,AX ;字输出字输出(PORT8+1),PORT8)AXl lOUT DX,AL ;OUT DX,AL ;字节输出字节输出 (DX)ALl
43、lOUT DX,AXOUT DX,AX ;字输出字输出 (DX)+1),(DX)AX指指令令操操作作:将将AL(字字节节)或或AX(字字)数数据据写写到到端端口。口。n2.2.1数据传送类指令数据传送类指令362.2指令系统指令系统uu输入输出类指令举例输入输出类指令举例输入输出类指令举例输入输出类指令举例:u例例 2-2-1-13-1 IN AL,0F1HIN AL,0F1H;AL从从F1H端口读入一个字节端口读入一个字节 IN AXIN AX,80H80H;AL80H端口的内容端口的内容 ;AH 81H端口的内容端口的内容 MOV DXMOV DX,210H210H;DX端口地址端口地址2
44、10H IN ALIN AL,DX DX ;AL210H端口的内容端口的内容u例例2-2-1-13-2 OUT 85HOUT 85H,ALAL ;85H端口端口 AL MOV DXMOV DX,0FF4H0FF4H OUT DXOUT DX,ALAL ;FF4H端口端口 AL MOV DXMOV DX,300H300H;DX指向指向300H OUT DXOUT DX,AXAX ;300H端口端口 AL ;301H端口端口 AHn2.2.1数据传送类指令数据传送类指令372.2指令系统指令系统uu数据传送类指令对标志寄存器的影响:数据传送类指令对标志寄存器的影响:数据传送类指令对标志寄存器的影响
45、:数据传送类指令对标志寄存器的影响:MOV MOV DST,SRC DST,SRCLEA REG16LEA REG16LEA REG16LEA REG16,MEMMEMMEMMEM LDS LDS LDS LDS REG16REG16REG16REG16,MEMMEMMEMMEM LES LES LES LES REG16REG16REG16REG16,MEMMEMMEMMEM XCHG DST XCHG DST,SRCSRCXLAT LABELXLAT LABELPUSH PUSH SRC SRCPOP POP DST DSTPUSHF LAHF(Load AH With Flags)将标志
46、寄存器的低将标志寄存器的低8位送位送AH上述数据传送数指令对标志位无影响上述数据传送数指令对标志位无影响lSAHF(Store AH Into Flags);将将AH的内容送标志寄存器的低的内容送标志寄存器的低8位,位,它的执行刷新了它的执行刷新了SF,ZF,AF,PF,CF标志位。标志位。lPOPF POPF(恢复原先保存的值)恢复原先保存的值)n2.2.1数据传送类指令数据传送类指令PSW的标志位的标志位OFDFIFTFSFZFAFPFCF382.2指令系统指令系统 n8086/80888086/8088的的算算术术运运算算指指令令包包括括二二进进制制运运算算及及十十进进制制运运算算指指令
47、令。有加、减、乘、除四种基本运算,及各种调整操作指令等。有加、减、乘、除四种基本运算,及各种调整操作指令等。n加法类指令加法类指令加法类指令加法类指令 uu不加进位位的加法指令不加进位位的加法指令不加进位位的加法指令不加进位位的加法指令 指令格式指令格式指令格式指令格式:ADD DSTADD DST,SRCSRC ;DSTDST+SRC 指令操作指令操作指令操作指令操作:目的操作数与源操作数相加,结果送目的操作数:目的操作数与源操作数相加,结果送目的操作数操操操操作作作作数数数数要要要要求求求求:DST可可以以是是寄寄存存器器或或存存储储器器,而而SRC可可以以是是立立即即操操作作数数、寄寄存
48、存器器或或存存储储器器,但但DST、SRC不不能能同同时时为为存存储储器。影响全部状态标志位。器。影响全部状态标志位。(注:不含段寄存器操作数)(注:不含段寄存器操作数)例例:ADDAX,SI ;AX(AX)+(SI),16位运算位运算 ADDX,3 ;X(X)+3,运算位数由运算位数由X的类型确定的类型确定n2.2.2 算术运算指令算术运算指令 392.2指令系统指令系统 n加法类指令加法类指令加法类指令加法类指令u不加进位位的加法指令不加进位位的加法指令不加进位位的加法指令不加进位位的加法指令下面的指令无法确定操作数的类型,汇编时将报告错误:下面的指令无法确定操作数的类型,汇编时将报告错误
49、:ADDSI,5;两个操作数都没有明确类型两个操作数都没有明确类型如果目的操作数如果目的操作数是是DS:SI指向的字节存储单元,可以修改如下:指向的字节存储单元,可以修改如下:ADDBYTE PTR SI,5 说明说明说明说明:加加法法指指令令执执行行后后,状状态态标标志志CF,OF,ZF,SF,PF,AF按按照照运运算算结结 果被刷新;果被刷新;操操作作数数可可以以是是8位位/16位位,源源操操作作数数与与目目的的操操作作数数应应该该有有相相 同的类型,不能同时为内存操作数。同的类型,不能同时为内存操作数。n2.2.2 算术运算指令算术运算指令 402.2指令系统指令系统 n加法类指令加法类
50、指令u不加进位位的加法指令不加进位位的加法指令uADDADD指令有五种形式:指令有五种形式:指令有五种形式:指令有五种形式:lADD REG,REG ;REGREG+REGlADD REG,MEM ;REGREG+MEMlADD REG,IMM ;REGREG+IMMlADD MEM,REG ;MEMMEM+REGlADD MEM,IMM ;MEMMEM+IMMn2.2.2 算术运算指令算术运算指令 412.2指令系统指令系统 n加法类指令加法类指令u加进进位的加法指令加进进位的加法指令加进进位的加法指令加进进位的加法指令ADCADC指令格式:指令格式:指令格式:指令格式:ADC DST,SR