第二章 实模式程序设计(汇编语言)2.ppt
《第二章 实模式程序设计(汇编语言)2.ppt》由会员分享,可在线阅读,更多相关《第二章 实模式程序设计(汇编语言)2.ppt(113页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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指指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 实模式程序设计汇编语言2 第二 模式 程序设计 汇编语言
限制150内