数据传送指令._第1页
数据传送指令._第2页
数据传送指令._第3页
数据传送指令._第4页
数据传送指令._第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、1第二节第二节 8086/8088的指令系统的指令系统8086/8088的指令系统中共有的指令系统中共有92种基本指令。种基本指令。可以分成可以分成6个功能组个功能组:1数据传送数据传送(Data transfer)2算术运算(算术运算(Arithmetic)3逻辑运算和移位指令逻辑运算和移位指令(Logic& Shift)4串操作串操作(String manipulation)5控制转移(控制转移(Control Transfer)6处理器控制(处理器控制(Processor Control)2介绍指令系统使用介绍指令系统使用的符号:的符号:八位寄存器八位寄存器: AH,AL,BH,H,BL

2、,CH,CL,DH,DL 十六位通用寄存器十六位通用寄存器: AX,BX,CX,DX,SP,BP,SI,DI 堆栈指针堆栈指针 SP 指令指针指令指针 IP(或(或PC)标志位标志位Flags目的和源变址寄存器目的和源变址寄存器DI, SI段寄存器段寄存器CS, DS, ES, SS通用寄存器通用寄存器rAL或或AX(取决于操作数长度取决于操作数长度) acc38086/8088指令助记符表指令助记符表 (自学)自学) 指令类别指令类别记助符记助符数数据据传传送送通用传送通用传送输入输出输入输出目标地址传送目标地址传送标志传送标志传送算算术术运运算算加法加法减法减法乘法乘法除法除法转换转换MO

3、V, PUSH, POP, XCHG, XLATMOV, PUSH, POP, XCHG, XLATIN, OUTIN, OUTLEA, LDS, LESLEA, LDS, LESLAHF, SAHF, PUSHF, POPFLAHF, SAHF, PUSHF, POPFADD, ADC, INC,ADD, ADC, INC, AAA, DAAAAA, DAASUB, SBB, DEC, NEG, CMP, SUB, SBB, DEC, NEG, CMP, AAS, DAS,AAS, DAS,MUL, IMUL, MUL, IMUL, AAMAAMDIV, IDIV, DIV, IDIV, A

4、ADAADCBW, CWDCBW, CWD48086/8088指令助记符表(续)指令助记符表(续)逻逻辑辑指指令令逻辑运算逻辑运算移位移位 循环移位 循环移位串串处处理理串操作串操作重复控制重复控制控控制制转转移移转转移移无条件转移无条件转移条件条件转移转移循环控制循环控制过程调用过程调用中断指令中断指令处理器控制处理器控制AND, OR, XOR, NOT ,TESTAND, OR, XOR, NOT ,TESTSHL, SAL, SHR, SARSHL, SAL, SHR, SARROL, ROR, RCL, RCRROL, ROR, RCL, RCRMOVS, CMPS, SCAS, L

5、ODS, STOSMOVS, CMPS, SCAS, LODS, STOSREP, REPE/REPZ, REPNE/REPNZREP, REPE/REPZ, REPNE/REPNZJMPJMPJA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZ,JE/JZ,JNS,JO,JS, JG/JA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZ,JE/JZ,JNS,JO,JS, JG/JNLE,JGE/JNL,JL/JNGE,JLE/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPEJNLE,JGE/JNL,JL/JNGE,JLE

6、/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPELOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZLOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZCALL, RETCALL, RETINT, INTO, IRETINT, INTO, IRETCLC, STC, CMC, CLD, STD, CLI, STI, NOP, HLT, WAIT, ESC,LOCKCLC, STC, CMC, CLD, STD, CLI, STI, NOP, HLT, WAIT, ESC,LOCK指令类别指令类别记助符记助符5第二部分第二部分 8086/8088指令

7、系统指令系统一、一、 数据传送指令数据传送指令(Data transfer)(一)通用传送指令(一)通用传送指令(General Purpose Transfer)(二)输入输出指令(二)输入输出指令(Input and Output)(三)目的地址传送指令(三)目的地址传送指令(Address-object transfer)(四)标志传送指令(四)标志传送指令(Flag register transfer)6功能:功能: 负责把数据、地址或立即负责把数据、地址或立即数数传传 送到送到寄存器或存储单元寄存器或存储单元。特点:特点: 它是计算机最基本、最重要的一种操作,使用比例最高。它是计算机

8、最基本、最重要的一种操作,使用比例最高。种类种类(分四种分四种): 除除 SAHF和和POPF指令外,对标志位没有影响。指令外,对标志位没有影响。7(General Purpose Transfer)8088提供方便灵活的通用的传送操作,适用于大多数操作数。提供方便灵活的通用的传送操作,适用于大多数操作数。通用传送指令包括:通用传送指令包括:1、MOV (Movement)2、PUSH (Push word onto stack) POP (Pop word off stack)3、XCHG (Exchange)4、XLAT (Translate)81MOV dest,src ; (dest)

9、 (src) 目的目的源源目的目的 源源 把一个字节把一个字节(B)或一个字(或一个字(W)操作数由源传送至目的。)操作数由源传送至目的。 实现实现:寄存器寄存器 寄存器寄存器/存储器之间;存储器之间;立即数立即数寄存器寄存器/存储器存储器寄存器寄存器/存储器存储器段寄存器之间的数据传送。段寄存器之间的数据传送。9 具体说,通用数据传送指令能实现:具体说,通用数据传送指令能实现: CPU内部寄存器之间的数据的任意传送内部寄存器之间的数据的任意传送(除了码段寄存器(除了码段寄存器CS和指令指针和指令指针IP以外)。以外)。例:例: MOV DL,CH ; 8位寄存器位寄存器 8位寄存器位寄存器

10、MOV AX,DX ; 16位寄存器位寄存器 16位寄存器位寄存器 MOV SI, BP MOV DS,BX ;通用寄存器;通用寄存器 段段寄存器寄存器 MOV AX, CS ;段段寄存器寄存器 通用寄存器通用寄存器10 立即数传送至立即数传送至CPU内部通用寄存器组内部通用寄存器组 (AX、BX、CX、DX、BP、SP、SI、DI)。)。 用于给寄存器赋初值。用于给寄存器赋初值。 例:例: MOV CL,04H;立即数;立即数8位位寄存器寄存器 MOV AX,03FFH;立即数;立即数16位位寄存器寄存器 MOV WORD PTR SI ,057BH ;立即数;立即数存储器存储器MOV BY

11、TE PTR MEM, 5 ;立即数;立即数存储器存储器11 CPU内部寄存器(除内部寄存器(除CS和和IP外)外)与存储器(所有寻址方式)之间数据传送。与存储器(所有寻址方式)之间数据传送。可以实现一字节或一个字的传送。可以实现一字节或一个字的传送。 例:例:MOV MEM , AX; 累加器累加器存储器存储器,直接寻址直接寻址MOV MEM ,DS;段寄存器;段寄存器存储器,存储器,直接寻址直接寻址MOV DISPBX ,CX;寄存器;寄存器存储器,存储器,变址寻址变址寻址MOV AX , DISP SI;存储器;存储器累加器,累加器,变址寻址变址寻址MOV DS , MEM;存储器;存储

12、器段寄存器,段寄存器,直接寻址直接寻址MOV CX , DISP BX SI ;存储器;存储器累加器,累加器,相对基址加变址相对基址加变址12 j MOV MEM2 , MEM1 错。错。MOV AX , MEM1MOV MEM2 , AX 对。对。 例例 : MOV DS,2000H 错。错。MOV AX, 2000HMOV DS , AX 对。对。 13l MOV ES , DS ; 错错MOV AX , DSMOV ES , AX ; 对对 。 例:例:MOV CS,AX ; 错错 MOV AX,CS ;对对 。 MOV IP, AX ;错错 MOV AX, IP ; 对。对。14BX、

13、SI、DI间址间址默认段地址为默认段地址为DS,BP间址间址默认段地址默认段地址SS。这样做为了允许程序员连续用两条指令分别对这样做为了允许程序员连续用两条指令分别对SS和和SP寄寄存器赋值,同时又防止堆栈空间变动过程出现中断。存器赋值,同时又防止堆栈空间变动过程出现中断。(除(除SAHF、POPF以外)。以外)。15 例:例:实现将实现将AREA1开始的开始的100个数据传送到个数据传送到AREA2开始的单元。开始的单元。AREA1:AREA2:100个数据个数据16分析题意:分析题意: 可以用可以用200条条MOV指令来完成指令来完成100个数据传送,个数据传送, 指令操作重复,每个数据传

14、送后的地址是变化的。指令操作重复,每个数据传送后的地址是变化的。 可以利用循环,可以利用循环,但每循环一次要修改地址(源地址和目的地址),但每循环一次要修改地址(源地址和目的地址),必须把地址放在寄存器当中,用必须把地址放在寄存器当中,用寄存器间接寻址来寻找操作数寄存器间接寻址来寻找操作数.17得到如下程序:得到如下程序:MOV SI, AREA1 MOV DI, AREA2 MOV CX,100AGAIN :MOV AL,SIMOV DI,AL JNZ AGAIN18 MOV指令的字节数、时钟周期数、指令的字节数、时钟周期数、CPU与内存间传送次数与内存间传送次数字节字节例例时钟数时钟数M

15、M传送到传送到CPUCPU次数次数MOVMOV指令操作数指令操作数AX MAX M M AX M AX10(14)10(14)1 13 3MOV COUNTDI, AXMOV COUNTDI, AXR RR R10(14)10(14)1 13 3MOV AX,TEMPMOV AX,TEMP2 22 2MOV DS,BXMOV DS,BXM RM RR MR M8(12)+ EA8(12)+ EA12424MOV BP,STAK_TOPMOV BP,STAK_TOP9(13)+ EA9(13)+ EA1 12424MOV COUNTBXSI,CXMOV COUNTBXSI,CXi im m R

16、R( (段寄存器除外)段寄存器除外)4 42323MOV CL,2MOV CL,2i im m M M10(14)+ EA10(14)+ EA1 13636MOV word ptrMOV word ptr BP,5H BP,5HR R段段 R R1616(CS(CS、IPIP除外)除外)2 22 2MOV ES,CXMOV ES,CXMOV BP,SSMOV BP,SSM RM R段段R R段段 M M8(12)+ EA8(12)+ EA12424MOV DS,SEG_BASEMOV DS,SEG_BASE9(13)+ EA9(13)+ EA1 12424MOVBXSEG_SAN,CSMOVB

17、XSEG_SAN,CS19执行指令所需的时钟周期数,执行指令所需的时钟周期数, 直接决定了指令的执行时间。直接决定了指令的执行时间。 决定于是决定于是字节字节操作还是操作还是字字操作;操作; 若是若是内存内存操作数,决定于操作数,决定于寻址方式寻址方式(还要加上内存操(还要加上内存操 作数的寻址时间作数的寻址时间 )。表中表中b( )的含义:的含义: b 字节操作时钟数字节操作时钟数 ( )字操作时钟数)字操作时钟数20如下表所示如下表所示: (若段超越,再加两个时钟周期若段超越,再加两个时钟周期)寄存器间接寻址寄存器间接寻址寻址方式寻址方式计算EA所需时间计算EA所需时间直接寻址直接寻址寄存

18、器相对寻址寄存器相对寻址基址加变址寻址基址加变址寻址BP+DI, BX+SIBP+DI, BX+SIBP+SI, BX+DIBP+SI, BX+DI相对基址加变址寻址相对基址加变址寻址BP+DI+位移量】, BX+SI+位移量BP+DI+位移量】, BX+SI+位移量BP+SI+位移量】, BX+DI+位移量BP+SI+位移量】, BX+DI+位移量6 65 59 97 78 81111121221:指令字节数与寻址方式有关。指令字节数与寻址方式有关。 通常操作码占二个字节;通常操作码占二个字节; 立即寻址立即寻址 : 立即数增加立即数增加1-2个字节数;个字节数; 操作数在内存中操作数在内存

19、中 : 直接寻址直接寻址 :直接地址为直接地址为1-2个字节,总的指令长个字节,总的指令长3-4个字节;个字节; 寄存器间接寻址(没有位移量)寄存器间接寻址(没有位移量): 2个字节;个字节; 变址寻址或者相对基址加变址变址寻址或者相对基址加变址 : 都有都有1-2字节的位移量,字节的位移量,指令字节数为指令字节数为2-4个个 字节。字节。22指执行指令时,内存与指执行指令时,内存与CPU之间数据传送的次数。之间数据传送的次数。 凡是立即数凡是立即数寄存器或寄存器之间的传送无此传送数。寄存器或寄存器之间的传送无此传送数。 凡是寄存器与存储器之间传送次数为凡是寄存器与存储器之间传送次数为1。23

20、2 PUSH (Push word onto stack) POP (Pop word off stack) 这是两条堆栈操作指令。这是两条堆栈操作指令。堆栈堆栈按照按照先进后出先进后出原则组织的一段内存区域,原则组织的一段内存区域, 下推式的(规定堆栈设置在堆栈段内)改变下推式的(规定堆栈设置在堆栈段内)改变SP的内容,的内容, 随着随着推入堆栈内容增加,推入堆栈内容增加,SP的值减少。的值减少。 先进后出工作原则(先进后出工作原则(Last In First Out 简称简称LIFO) 堆栈在内存中的情况:堆栈在内存中的情况: 24 可以可以用一条立即数传送指令给用一条立即数传送指令给SP

21、赋值赋值,确定,确定SP在在SS段段中的初始位置。中的初始位置。例:例:设:设: (SS)=9000H , 堆栈段为堆栈段为64KB MOV SP,0E200H ;(SP)=0E200H则:则: 整个堆栈段的物理地址范围为:整个堆栈段的物理地址范围为: 堆栈在内存中的情况如右图所示:堆栈在内存中的情况如右图所示:.偏移地址偏移地址物理地址物理地址00000H(低地址)00000H(低地址)90000H90000H9E200H9E200H9FFFFH9FFFFHFFFFHFFFFH(SP)=E200H(SP)=E200H0000H0000H堆堆栈栈段段堆栈在内存中的情况堆栈在内存中的情况25q

22、调用子程序(或过程)或发生中断时要调用子程序(或过程)或发生中断时要保护断点的地址保护断点的地址, 子程序或中断返回时恢复断点。子程序或中断返回时恢复断点。26主程序主程序 子程序子程序:子程序:在一个实际程序中,有些操作要执行多次,把要子程序:在一个实际程序中,有些操作要执行多次,把要 重重 复执行复执行(subroutine)操作编为子程序。操作编为子程序。 也常把一些常用的操作标准化、通用化的子程序。也常把一些常用的操作标准化、通用化的子程序。主程序(主程序(Main program)往往要调用子程序往往要调用子程序 或处理或处理 中断中断, 暂停主程序,执行子程序或中断服务程序。暂停主

23、程序,执行子程序或中断服务程序。27 (8088中码段寄存器中码段寄存器CS和指令指针和指令指针IP),), 才能才能,通常用到,通常用到内部寄存器内部寄存器,执行结果会影响,执行结果会影响标志位,必须在调用子程序之前将标志位,必须在调用子程序之前将。 子程序嵌套或子程序递归(自调自)子程序嵌套或子程序递归(自调自) 保留许多信息,而且保证正确返回(且后进先出)。保留许多信息,而且保证正确返回(且后进先出)。 后保留先取出原则后保留先取出原则(即(即LIFO-LAST In First out)。)。28注意:注意:SP堆栈指针堆栈指针,始终指向栈顶。始终指向栈顶。SP初值用初值用MOV SP

24、,i m来设定。来设定。29q 存放存放CPU寄存器或存储器中暂时不使用的数据寄存器或存储器中暂时不使用的数据, 使用数据时将其弹出:使用数据时将其弹出: PUSH AX; 将将(AX)入栈入栈.11112222(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段PUSH AX前PUSH AX前(AX).22H22H11H11H.11H11H22H22H(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段PUSH AX后PUSH AX后(AX)30使用数据时将其弹出:使用数据时将其弹出:POP BX.22H22H11H11H.33H33H44H4

25、4HBXBX(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段POP BX前POP BX前.22H22H11H11H.11H11H22H22HBXBX(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段POP BX后POP BX后31q 调用子程序(或过程)或发生中断时要保护断点的地址,调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。子程序或中断返回时恢复断点。子程序嵌套子程序嵌套.断点2(L)断点2(L)断点2(H)断点2(H)断点1(L)断点1(L)断点1(H)断点1(H).(SP)(SP)先先压压入入后后压

26、压入入先先弹弹出出后后弹弹出出堆堆栈栈段段断点地址压入和弹出情况断点地址压入和弹出情况主主程程序序子子程程序序1 1子子程程序序2 2断点1断点1断点2断点2弹出弹出断点2断点2弹出弹出断点1断点132 (堆栈操作指令有两条堆栈操作指令有两条): 格式:格式:PUSH src ; (SP) (SP)-2 (SP)+1,(SP) (src) 操作如:操作如:PUSH AX 格式:格式:POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2操作如:操作如: POP BX33 堆栈操作都按字操作。堆栈操作都按字操作。 PUSH , POP 指令的操作数可能有三种:指令的操作

27、数可能有三种:寄存器(通用寄存器,地址指针,变址寄存器)寄存器(通用寄存器,地址指针,变址寄存器),段寄存器段寄存器(CS除外,除外,PUSH CS 合法,合法,POP CS 非法)非法),存储器。存储器。 执行执行PUSH 指令指令, (SP)-2 (SP),低字节放在低地址,高字节放在高地址。低字节放在低地址,高字节放在高地址。随着推入堆栈内容增加,堆栈就扩展,随着推入堆栈内容增加,堆栈就扩展,SP的值减少,的值减少, 但但SP总是指向栈顶,总是指向栈顶, 堆栈工作原则堆栈工作原则后进先出。后进先出。 堆栈最大容量即为堆栈最大容量即为SP的初值与的初值与SS之间的差。之间的差。34堆栈应用

28、举例:堆栈应用举例: 例:例:MOV BP,SPPUSH AXPUSH BXPUSH CXMOV CX,BP-6 MOV BX,BP-4MOV AX,BP-2ADD SP, 6例例 : PUSH AXPUSH BXPUSH CXPOP CXPOP BX POP AX35(Exchange)格式:格式:XCHG dest , src;(dest) (src)执行操作:执行操作: 可以可以 实现:实现: 注意:注意: 存储器之间不能交换,存储器之间不能交换,两个操作数中必须有一个在寄存器中;两个操作数中必须有一个在寄存器中; 段寄存器不能作为一个操作数;段寄存器不能作为一个操作数; 允许字或字节操

29、作,不影响标志位。允许字或字节操作,不影响标志位。36应用举例:应用举例:XCHG BL,DLXCHG AX,SIXCHG COUNTDI, AXXCHG BX,DI(错)错)XCHG DS, AX (错)错)37该指令不影响标志位。该指令不影响标志位。格式:格式: XLAT str_table;(;(AL)(BX )+(AL) 或或 XLAT str_table表格符号地址(首地址),表格符号地址(首地址), 只是为了提高可读性而设置,汇编时仍用只是为了提高可读性而设置,汇编时仍用BX。 38XLAT指令使用方法指令使用方法: 先建立一个字节表格;先建立一个字节表格; (相对与表格首地址位移

30、量)(相对与表格首地址位移量); (表中第一个元素的序号为(表中第一个元素的序号为0) 。 (AL)为转换的代码。为转换的代码。39 若把字符的若把字符的扫描码扫描码转换成转换成ASCII码码; 或或数字数字09转换成转换成7段数码所需要的相应代码(段数码所需要的相应代码(字形码字形码)等)等就要用就要用XLAT指令。指令。例:内存的数据段中有一张十六进制数字的例:内存的数据段中有一张十六进制数字的ASCII码表。码表。 首地址为:首地址为:Hex_table ,欲查出表中第欲查出表中第10个元素(个元素(A)40执行指令序列执行指令序列:MOV BX,OFFSET Hex_tableMOV

31、AL,0AH XLAT Hex_table假设:假设:(DS)=F000H, Hex_table=0040H(AL)=0AH执行执行XLAT以后:以后: (AL)=41H=(F004AH),),即即“A”的的ASCII码。码。30H30H31H31H32H32H.39H39H41H41H42H42H.46H46H.Hex_tableHex_tableHex_table+1Hex_table+1Hex_table+2Hex_table+2Hex_table+0AHHex_table+0AHHex_table+0BHHex_table+0BHHex_table+0FHHex_table+0FHFF

32、BBAA9911220016进制数的进制数的ASCII码表码表41(Input and Output)输入输出指令共两条:输入输出指令共两条: (Input byte or word) (Output byte or word) 输入指令输入指令用于用于CPU从外设端口接受数据从外设端口接受数据, 输出指令输出指令用于用于CPU向外设端口发送数据。向外设端口发送数据。 无论接受还是发送数据,必须通过累加器无论接受还是发送数据,必须通过累加器AX(字)或字)或AL(字节),字节),又称累加器专用传送指令又称累加器专用传送指令 。 42每个外设要占几个端口:数据口,状态口和控制口。每个外设要占几个

33、端口:数据口,状态口和控制口。CPUCPUI/OI/O设备设备译译码码数据端口数据端口DBDBABABCBCBI/O接口I/O接口状态端口状态端口控制端口控制端口43在在IBMPC机里,可以配接许多外部设备,机里,可以配接许多外部设备,每个外设与每个外设与CPU之间交换数据,状态信息和控制命令,之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有端口数:外部设备最多有65536个个I/O端口。端口。 A0A15译码形成。译码形成。端口号:端口号(即外设端口地址)为端口号:端口号(即外设端口地址)为0000HFFFF

34、H。PC机仅使用机仅使用A0A9译码形成译码形成I/O口地址,即口地址,即1024H个口地址个口地址 端口号:端口号:0000H03FFH其中:其中: A9=1,表示扩充槽上的,表示扩充槽上的口地址。口地址。44,可以直接写在指令中,可以直接写在指令中,这就是长格式。这就是长格式。端口号代替指令中的端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。机器指令用二字节表示,第二字节就是端口号。,必须先把端口号放到必须先把端口号放到DX寄存器中。寄存器中。不需要用任何段寄存器来修改它的值。不需要用任何段寄存器来修改它的值。45格式:格式:IN acc, port ;(acc) (

35、port)具体形式有四种:具体形式有四种:IN AL, data8 ; 端口地址端口地址8位,输入一个字节位,输入一个字节IN AX, data16 ;端口地址;端口地址16位,输入一个字位,输入一个字IN AL, DX ;端口地址;端口地址16位,输入一个字节位,输入一个字节IN AX, DX ;端口地址;端口地址16位,输入一个字位,输入一个字 必须通过累加器必须通过累加器AX(字)或字)或AL(节)节)输入输入数据。数据。46(Output byte or word) 格式:格式: OUT port, acc ;(port) (acc)具体形式有四种:具体形式有四种: OUT data8

36、 , AL ; 端口地址端口地址8位,输出一个字节位,输出一个字节OUT data16, AX ;端口地址;端口地址16位,输出一个字位,输出一个字OUT DX , AL ;端口地址;端口地址16位,输出一个字节位,输出一个字节 OUT DX , AX ;端口地址;端口地址16位,输出一个字位,输出一个字 必须通过累加器必须通过累加器AX(字)或字)或AL(节)节)输出输出数据。数据。47例例1:实现:实现(29H)(28H)(DATA_WORD) IN AX,28H MOV DATA_WORD,AX例例2:从端口:从端口3FCH 送一个字到送一个字到AX寄存器寄存器MOV DX,3FCH I

37、N AX,DX ; (AL)(3FCH),), (AH)(3FDH) 例例3:实现将(:实现将(AL) (05H) OUT 5,AL;(;(05H)(AL)48(Address-object transfer) 8086 /8088 提供三条提供三条:地址指针写入指定寄存器或寄存器对指令。地址指针写入指定寄存器或寄存器对指令。1、LEA(Load Effective Address)2、LDS (Load pointer using DS)3、LES (Load pointer using ES)49(Load Effective Address)格式:格式: LEA reg16 , mem1

38、6 ;EA(reg16)功能:加载有效地址,用于写近地址指针。功能:加载有效地址,用于写近地址指针。 。例:设(例:设(BX)=0400H,(,(SI)=003CHLEA BX,BX+SI+0F62H执行指令后执行指令后: EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EH50注意:设注意:设 (DS)=3000HBUFFER=1000H(31000H)=0040H(1) LEA 指令与指令与MOV 的区别的区别LEA BX , BUFFER ;(;(BX)=1000HMOV BX , BUFFER ; (BX)=0040H LEA 指令与

39、指令与MOV等价等价LEA BX , BUFFER ; (BX)=1000HMOV BX , OFFSET BUFFER ; (BX)=1000H40H40H00H00H.3000H:1000H3000H:1000H(DS)(DS) BUFFERBUFFER31001H31001H.存储器存储器51(2), 。(3)请思考下列指令的正、误)请思考下列指令的正、误LEA DX ,BETABXSILEA DX , AX52 (Load pointer using DS)格式:格式:LDS reg16, mem32 ;(;(reg16)(EA) (DS)(EA)+2)功能:功能:。将指令指定将指令指

40、定mem32单元的前两个单元内容单元的前两个单元内容(16位偏移量位偏移量)装入指装入指定通用寄存器,把后两个单元内容定通用寄存器,把后两个单元内容(段地址段地址) 装入到装入到DS段寄存段寄存器。器。用于写远地址指针。用于写远地址指针。53例例: 假设:假设: (DS)=C 000H指令指令: LDS SI, 0010H执行指令后执行指令后: (SI)=0180H (DS)=2000H 80H80H01H01H00H00H20H20HC000H:0010HC000H:0010H(DS)(DS)C0011HC0011HC0012HC0012HC0013HC0013H.存储器存储器54格式:格式:LES reg16, mem32 ;(;(reg16)(EA) (ES)(EA)+2)功能:功能: 此指令常常指定此指令常常指定DI寄存器。寄存器。将指令指定将指令指定mem32单元的前两个单元内容单元的前两个单元内容(16位偏移量位偏移量)装入装入指定通用寄存器,把后两个单元内容指定通用寄存器,把后两个单元内容(段地址段地址) 装入到装入到ES段段寄存器。寄存器。用于写远地址指针。用于写远地址指针。55例例: 假设:假设: (DS)=B 000H (BX)=080AH指令指令: LES D

温馨提示

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

评论

0/150

提交评论