版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、13.3指令系统指令系统 n概述概述把数据从计算机的一个部位传送到另一部位把数据从计算机的一个部位传送到另一部位 源操作数和目的操作数源操作数和目的操作数源操作数是指发送部位的操作数源操作数是指发送部位的操作数目的操作数是指接收部位的操作数目的操作数是指接收部位的操作数将源操作数的内容送到目的操作数,交换将源操作数的内容送到目的操作数,交换指令除外指令除外 数据传送、地址传送、标志传送、输入输数据传送、地址传送、标志传送、输入输出和交换出和交换 n3.3.1数据传送类指令数据传送类指令 23.3指令系统指令系统 n 数据传送类指令数据传送类指令 指令格式:指令格式:MOV DST, SRC;
2、DSTSRCMOV指令把源操作数指令把源操作数(source)传送到目的操作数传送到目的操作数(destination) 设指令执行前,设指令执行前,(AX) = 2345H,(BX) = 1111H。指令指令“”执行后,执行后,(AX)= 1111H,(BX)= 1111H。 源操作数源操作数BX的内容被复制到的内容被复制到AX寄存器内,源操作数寄存器内,源操作数BX的内容的内容保持不变,目的操作数保持不变,目的操作数AX的原内容被覆盖。的原内容被覆盖。 n3.3.1数据传送类指令数据传送类指令 33.3指令系统指令系统 n 数据传送类指令数据传送类指令u 数据传送指令数据传送指令; DST
3、SRC把一个字节或一个字操作数从源传送把一个字节或一个字操作数从源传送到目的地,源操作数可以是寄存器、段寄存器、到目的地,源操作数可以是寄存器、段寄存器、存储器以及立即操作数,目的操作数可以是寄存存储器以及立即操作数,目的操作数可以是寄存器、存储器和段寄存器器、存储器和段寄存器(CS除外除外) 数据传送方向:图数据传送方向:图3-3-1。n3.3.1数据传送类指令数据传送类指令 43.3指令系统指令系统 数据传送方向:图数据传送方向:图3-3-1。 注意:注意:l 立即操作数、段寄存立即操作数、段寄存器器CS只能作为源操作只能作为源操作数;数;l 源、目的操作数只能源、目的操作数只能有一个是存
4、储器操作有一个是存储器操作数;数;l 立即操作数不能直接立即操作数不能直接送给段寄存器。送给段寄存器。n3.3.1数据传送类指令数据传送类指令 图3-3-1。53.3指令系统指令系统 MOV指令有九种形式:指令有九种形式:lMOV REG,REG;(REG)(REG)lMOV 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 SE
5、GREG,REG16 ;(SEGREG)(REG16),CS除外除外lMOV SEGREG,MEM16 ;SEGREGMEM16,CS除外除外n3.3.1数据传送类指令数据传送类指令 63.3指令系统指令系统 指令实例指令实例:例例3-3-1-1 MOVMOV指令举例(寄存器、寄存器操作数)指令举例(寄存器、寄存器操作数):正确:正确: MOV CL, DH ;字节传送指令,;字节传送指令,DH寄存器内容送入寄存器内容送入CL MOV AX, CS ; 字传送指令,字传送指令,CS寄存器内容送入寄存器内容送入AX MOV SS, CX ; 字传送指令,字传送指令,CX寄存器内容送入寄存器内容送
6、入SS错误:错误: MOV CL, DX ;操作数类型不匹配;操作数类型不匹配 MOV CS , AX; CS寄存器不能作为目的操作数寄存器不能作为目的操作数 MOV DS, CS; 不能同时为段寄存器不能同时为段寄存器n3.3.1数据传送类指令数据传送类指令 73.3指令系统指令系统 指令实例指令实例:例例3-3-1-2 MOVMOV指令举例(立即数、寄存器操作数)指令举例(立即数、寄存器操作数):正确:正确: MOV AL, 30H;字节传送指令,执行后(;字节传送指令,执行后(AL)= 30H MOV AX, 30H;字传送指令,执行后(;字传送指令,执行后(AX)= 0030H MOV
7、 AL, -5 ;字节传送指令,执行后(;字节传送指令,执行后(AL)= 0FBH MOV AX, -5 ;字传送指令,执行后(;字传送指令,执行后(AX)= 0FFFBH错误:错误: MOV 30H, AL ;立即数不能用作目的操作数;立即数不能用作目的操作数 MOV AL, 300H ; 源操作数超出范围源操作数超出范围n3.3.1数据传送类指令数据传送类指令 83.3指令系统指令系统 指令实例指令实例:例例3-3-1-3 MOVMOV指令举例(存储器、寄存器操作数)指令举例(存储器、寄存器操作数):正确:正确: MOVBP, BL; 字节传送指令,字节传送指令,BL寄存器内容送寄存器内容
8、送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寄存器不能用来寄存器间接寻址寄存器不能用来寄存器间接寻址 MOV X_BYTE, AX ; 操作数类型不匹配操作数类型不匹配n3.3.1数据传送类指令数据传送类指令 93.3指令系统指令系统 指令实例指令实例:例:例3-3-1-4 MOVMOV指令举例(存储器、立即
9、数操作数)指令举例(存储器、立即数操作数):MOV mem data ;B/WData可以是字节立即数,也可以是字立即数。可以是字节立即数,也可以是字立即数。Mem-必须作数据类型说明。(必须作数据类型说明。(BYTE PTR-字节操作、字节操作、 WORD PTR-字操作)字操作)例:例:3-3-1-4-1 MOV BYTE PTR BX ,20H ;说明目的存储器操作数;说明目的存储器操作数MEM是字节单元。是字节单元。设设DS=3000H, BX =2200H,物理地址物理地址=30000+2200=32200H执行前执行前:(:(32200H)=ACH执行后:执行后: (32200H)
10、=20Hn3.3.1数据传送类指令数据传送类指令 103.3指令系统指令系统 指令实例指令实例:例:例2-2-1-4 MOVMOV指令举例(存储器、立即数操作数)指令举例(存储器、立即数操作数):MOV mem data ;B/WData可以是字节立即数,也可以是字立即数。可以是字节立即数,也可以是字立即数。Mem-必须作数据类型说明。(必须作数据类型说明。(BYTE PTR-字节操作、字节操作、 WORD PTR-字操作)字操作)例:例:3-3-1-4-2 MOV WORD PTR BX,234BH ;说明目的操作数存储单元是字单元。;说明目的操作数存储单元是字单元。设设DS=3000H,B
11、X=1000H,物理地址,物理地址=31000H执行前执行前:(:(31000H)=45H (31001H)=74H执行后:执行后: (31000H)=4BH (31001H)=23Hn3.3.1数据传送类指令数据传送类指令 113.3指令系统指令系统 指令实例指令实例:例:例3-3-1-4例例3-3-1-4-3:某一数据段:某一数据段:DATA_SEG SEGMENT ;数据段开始;数据段开始AREA1 DB 14H,3BHAREA2 DB 3 DUP(0)ARRAY DW 3100H,01A6HSTRING DB GOODDATA_SEG ENDS ;数据段结束;数据段结束n3.3.1数据
12、传送类指令数据传送类指令 123.3指令系统指令系统 指令实例指令实例:例:例3-3-1-4例例3-3-1-4-3:某一数据段:某一数据段:1 、 数 据 段 以 段 说 明 符、 数 据 段 以 段 说 明 符SEGMENT开始,以开始,以ENDS结结束,束, DATA_SEG 是数据段的是数据段的段名。段名。 2、DB伪操作符是定义字节伪操作符是定义字节变量,说明其后每一个操作占一变量,说明其后每一个操作占一个字节。个字节。 3、DW伪操作符是定义字变伪操作符是定义字变量,说明其后每一个操作占一个量,说明其后每一个操作占一个字。字。n3.3.1数据传送类指令数据传送类指令 133.3指令系
13、统指令系统 指令实例指令实例:例:例3-3-1-4例例3-3-1-4-3:某一数据段:某一数据段:4、DUP是复制操作符,它前是复制操作符,它前面的面的3表示在存储器中保留表示在存储器中保留3个个字节单元,且初值是字节单元,且初值是0。 5、符号地址:、符号地址: AREA1的偏移地址为的偏移地址为0000H AREA2的偏移地址为的偏移地址为0002H ARRAY的偏移地址为的偏移地址为0005H STRING的偏移地址为的偏移地址为0009Hn3.3.1数据传送类指令数据传送类指令 143.3指令系统指令系统 指令实例指令实例:例:例3-3-1-4-5:;将将ARRAY的偏移地址送的偏移地
14、址送DX寄存器寄存器中,中,OFFSET为属性操作符,表示应为属性操作符,表示应把后面的符号地址的值作为操作数把后面的符号地址的值作为操作数(DX)=0005H;ALAREA1中的内容中的内容14H;0002H单元单元14Hn3.3.1数据传送类指令数据传送类指令 153.3指令系统指令系统 使用使用MOV指令须注意:指令须注意: 源操作数与目的操作数可以是字节、字或双字,但必须有源操作数与目的操作数可以是字节、字或双字,但必须有 相同的类型;相同的类型; 源操作数与目的操作数不能同时为存储器操作数;源操作数与目的操作数不能同时为存储器操作数; 目的操作数不能是立即数;目的操作数不能是立即数;
15、 FLAGS、IP不能用作操作数。不能用作操作数。 源操作数与目的操作数不能同时为段寄存器;源操作数与目的操作数不能同时为段寄存器; 目的操作数是段寄存器时,源操作数只能是寄存器或存储目的操作数是段寄存器时,源操作数只能是寄存器或存储 器,不能是立即数;器,不能是立即数; CS不能用作目的操作数。不能用作目的操作数。n3.3.1数据传送类指令数据传送类指令 16n4.2.1数据传送类指令数据传送类指令 3.3指令系统指令系统 指令格式:指令格式:l PUSH SRC ; SP-1 SRCH,SP-2 SRCL,SPSP-2 ; SRC 为为REG16或或MEM16 或或SEGREGl PUSH
16、F ;SP-1 FLAGH ,SP-2 FLAGL, SPSP-2 指令操作:指令操作:n3.3.1数据传送类指令数据传送类指令 17n4.2.1数据传送类指令数据传送类指令 3.3指令系统指令系统 例例3-3-1-5执行前:执行前:SP=2500H SS=5000H AX=3125H指令执行:指令执行:首先首先SPSP-1(SP=24FFH),), AH(31H)24FFH单元单元然后然后SPSP-1(SP=24FEH),),AL(25H) 24FEH单元单元最后最后SP=24FEH,比操作前减比操作前减2n3.3.1数据传送类指令数据传送类指令 183.3指令系统指令系统 指令实例指令实例
17、:例:例3-3-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-1 DSH、SP-2 DSL、;SPSP-2n3.3.1数据传送类指令数据传送类指令 193.3指令系统指令系统 指令格式:指令格式:l POP DST; DSTL SP,DSTHSP+1, SPSP+2 ;DST为为R
18、EG16或或MEM16 或或SEGREGl POPF ; FLAGL SP,FLAGHSP+1,;SPSP+2 指令操作:该类指令可将栈顶内容(字信息占两个指令操作:该类指令可将栈顶内容(字信息占两个单元)弹出送到单元)弹出送到16位寄存器、段寄存器(不允许是位寄存器、段寄存器(不允许是CS)、存储器相邻两单元或)、存储器相邻两单元或标志寄存器标志寄存器中,源操作中,源操作数被助记符隐含,目的操作数被显式给出。它是进数被助记符隐含,目的操作数被显式给出。它是进栈指令的逆操作。栈指令的逆操作。n3.3.1数据传送类指令数据传送类指令 203.3指令系统指令系统 指令实例指令实例:例:例3-3-1
19、-7POP BX 执行前:执行前:SS=5000H,SP=1000H,BX=75C1H过程:过程:1、BLSS:1000H所指单元的内容所指单元的内容6BH,SPSP+1 2、BHSS:1001H所指单元的内容所指单元的内容48H,SPSP+1最后:最后:SP=1002H,BX=486BHn3.3.1数据传送类指令数据传送类指令 213.3指令系统指令系统 指令实例指令实例:例:例3-3-1-8在子程序和中断服务程序中,保护现场和恢复现场时,在子程序和中断服务程序中,保护现场和恢复现场时,要用入栈和出栈指令。要用入栈和出栈指令。如:如:PUSH AX;保护保护AX的内容的内容 PUSH BX;
20、保护保护BX的内容的内容 ;此程序段要用;此程序段要用到到AX 和和BX,所以在所以在 之前要保存原先内容。之前要保存原先内容。 POP BX;恢复恢复BX的原先的内容。的原先的内容。 POP AX; 恢复恢复AX的原先的内容。的原先的内容。n3.3.1数据传送类指令数据传送类指令 223.3指令系统指令系统 指令实例指令实例:例:例3-3-1-9在子程序和中断服务程序中,常用在子程序和中断服务程序中,常用PUSHF和和POPF保护和恢复保护和恢复需要的标志位,利用这两条指令还可以方便地改变标志寄存器中需要的标志位,利用这两条指令还可以方便地改变标志寄存器中任一位的状态。如任一位的状态。如80
21、86/8088指令系统中没有能直接修改指令系统中没有能直接修改TF标志标志的指令,可用以下程序来实现的指令,可用以下程序来实现TF的改变:的改变:如:如:PUSHF POP AX ;标志寄存器内容送标志寄存器内容送AX. OR AH, 01H ;将将TF位置位置1 PUSH AX POPF ; AX的内容送标志寄存器的内容送标志寄存器。n3.3.1数据传送类指令数据传送类指令 23u 标志寄存器传送指令标志寄存器传送指令 有两条标志寄存器传送指令,指令只涉及标志寄存有两条标志寄存器传送指令,指令只涉及标志寄存器的低器的低8位,而对高位,而对高8位没有影响。位没有影响。l LAHF(Load A
22、H With Flags)将标志寄存器的低)将标志寄存器的低8位送位送AHl SAHF(Store AH Into Flags) ;将;将AH的内容送标志寄存器的内容送标志寄存器的低的低8位,它的执行刷新了位,它的执行刷新了SF, ZF, AF, PF, CF标志位。标志位。3.3指令系统指令系统 n3.3.1数据传送类指令数据传送类指令 DSRC 243.3指令系统指令系统 n 地址传送指令地址传送指令8086/8088有三种专门传送地址的指令有三种专门传送地址的指令 :1. 传送偏移地址到寄存器;传送偏移地址到寄存器;2. 传送进入数据段的地址指针;传送进入数据段的地址指针;3. 传送进入
23、附加段的地址指针。传送进入附加段的地址指针。段地址和偏移地址也称为地址指针。段地址和偏移地址也称为地址指针。 n3.3.1数据传送类指令数据传送类指令 253.3指令系统指令系统 指令格式指令格式:指令操作:指令操作:这里源操作数必须是存储器操作数,目的操作数这里源操作数必须是存储器操作数,目的操作数必须是必须是16位寄存器,指令意义是将源操作数的偏移地址送任位寄存器,指令意义是将源操作数的偏移地址送任一一16位寄存器。该指令通常用来往某个位寄存器。该指令通常用来往某个REG16中设置偏移地中设置偏移地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。例例3-3-
24、1-9-1 假设变量假设变量X的偏移地址为的偏移地址为048CH, ; 执行后,执行后, DX=048CH 假设假设BP=1820H, SI=0068H ; 执行后执行后, BX=4+1820H+0068H =188CHn3.3.1数据传送类指令数据传送类指令 263.3指令系统指令系统 指令格式指令格式: 指令操作:指令操作:这里源操作数必须是存储器操作数,目的操作这里源操作数必须是存储器操作数,目的操作数必须是数必须是16位寄存器,指令意义是将源操作数的偏移地址送位寄存器,指令意义是将源操作数的偏移地址送任一任一16位寄存器。该指令通常用来往某个位寄存器。该指令通常用来往某个REG16中设
25、置偏移中设置偏移地址的初值,以便从此地址开始存取多个数据。地址的初值,以便从此地址开始存取多个数据。例例3-3-1-9-2 设设SI=1000H , DS=5000H , (51000H)=1234H ;执行后,;执行后,BX=1000H ;执行后,;执行后,BX=1234H n3.3.1数据传送类指令数据传送类指令 273.3指令系统指令系统 指令格式指令格式:LEA REG16,MEM指令操作:指令操作:这里源操作数必须是存储器操作数,目的操作数这里源操作数必须是存储器操作数,目的操作数必须是必须是16位寄存器,指令意义是将源操作数的偏移地址送任位寄存器,指令意义是将源操作数的偏移地址送任
26、一一16位寄存器。该指令通常用来往某个位寄存器。该指令通常用来往某个REG16中设置偏移地中设置偏移地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。例例3-3-1-9-3。 ;OFFSET返回变返回变量或标号的偏地址。量或标号的偏地址。 n3.3.1数据传送类指令数据传送类指令 283.3指令系统指令系统 指令格式指令格式:指令操作:指令操作:这里源操作数必须是存储器操作数,目的操作数这里源操作数必须是存储器操作数,目的操作数必须是必须是16位寄存器,指令意义是将源操作数的偏移地址送任位寄存器,指令意义是将源操作数的偏移地址送任一一16位寄存器。该指令通常用来
27、往某个位寄存器。该指令通常用来往某个REG16中设置偏移地中设置偏移地址的初值,以便从此地址开始存取多个数据。址的初值,以便从此地址开始存取多个数据。例例3-3-1-9-4 执行前:执行前:BX=0400H,SI=003CH 执行后:执行后:BX=0400H+003CH+0F62H=139EH n3.3.1数据传送类指令数据传送类指令 293.3指令系统指令系统 地址传送指令从存储器取出地址传送指令从存储器取出4B, 前面前面(两个低字节两个低字节)的的2B送入指定的寄存器,送入指定的寄存器, 后面后面(两个高字节两个高字节)的的2B送入由指令操作码包含的段寄存器。送入由指令操作码包含的段寄存
28、器。 ; 从存储器取出从存储器取出4B,送入,送入REG16和和DS ; 从存储器取出从存储器取出4B,送入,送入REG16和和ES 设设DS=1200H,(,(12450H)=F346H, (12452H)=0A90H ; 源物理地址源物理地址=12000H+450H=12450H 执行后:执行后:SI=F346H,DS=0A90Hn3.3.1数据传送类指令数据传送类指令 303.3指令系统指令系统 地址传送指令从存储器取出地址传送指令从存储器取出4B, 前面前面(两个低字节两个低字节)的的2B送入指定的寄存器,送入指定的寄存器, 后面后面(两个高字节两个高字节)的的2B送入由指令操作码包含
29、的段寄存器。送入由指令操作码包含的段寄存器。 ; 从存储器取出从存储器取出4B,送入,送入REG16和和DS ; 从存储器取出从存储器取出4B,送入,送入REG16和和ES 设设DS=0100H,BX=0020H,(01020H)=0300H, (01022H)=0500H ; 源物理地址源物理地址=01000+0020=01020H 执行后:执行后:DI=0300H,ES=0500H n3.3.1数据传送类指令数据传送类指令 313.3指令系统指令系统 指令格式:指令格式:XCHG DST,SRC; DSTSRC 指令操作:指令操作:该指令可实现一个字节或一个字的源操该指令可实现一个字节或一
30、个字的源操作数与目的操作数的交换。交换能在寄存器之间、作数与目的操作数的交换。交换能在寄存器之间、寄存器与存储器之间进行。寄存器与存储器之间进行。 三种具体形式:三种具体形式:l XCHG REG, REG ;REGREGl XCHG REG, MEM ;REGMEMl XCHG MEM, REG ;MEMREGn3.3.1数据传送类指令数据传送类指令 323.3指令系统指令系统XCHG AH, CL ;AHCLXCHG BFF1, AX ;(BFF1+1、BF1)AXXCHG BX, COUNT SI;BX(COUNT SI+1、COUNT SI) 指令说明:指令说明:BFF1在本节为字变量
31、,在本节为字变量,BFF1+1、BFF1、COUNT SI+1、COUNT SI分别表示以它们为偏移地址的存储单元的内分别表示以它们为偏移地址的存储单元的内容。容。交换指令的使用注意:不能在两个存储单元之间直接交换数交换指令的使用注意:不能在两个存储单元之间直接交换数据,段寄存器和立即数不能作为操作数。据,段寄存器和立即数不能作为操作数。n3.3.1数据传送类指令数据传送类指令 333.3指令系统指令系统指令格式:指令格式:;LABEL:表格首地址:表格首地址,为可读性而设为可读性而设;l指令操作:完成一个字节的查表转换。它将数据段中偏移地址为指令操作:完成一个字节的查表转换。它将数据段中偏移
32、地址为BX与与AL寄存器之和的存储器单元的内容送入寄存器之和的存储器单元的内容送入AL. (将(将BX指定的缓冲区中指定的缓冲区中AL指定的位移处的数据取出送到指定的位移处的数据取出送到AL。这是隐含寻址方式,默认使用。这是隐含寻址方式,默认使用BX,AL寄存器。)寄存器。) 使用使用XLAT前的准备工作:前的准备工作: 1、建立一个表格,、建立一个表格,且且BXBX表首地址表首地址 2、ALAL位移量(距表首地址的位移),因为位移量(距表首地址的位移),因为ALAL是是8 8位的,所以表格长度不位的,所以表格长度不超过超过256256 3、执行、执行XLAT,转换后的代码值,转换后的代码值A
33、L。 即:即:n3.3.1数据传送类指令数据传送类指令 343.3指令系统指令系统指令实例:例如指令实例:例如3-3-1-12 (完成功能:(完成功能: 若十六进制数字若十六进制数字0F的的LED七段码对照表如表所示,试用七段码对照表如表所示,试用指令求数字指令求数字5的七段码值。的七段码值。n3.3.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 ;
34、BX表格首地址表格首地址XLAT TABLE;查表得;查表得AL=12H353.3指令系统指令系统 n输入输出类指令输入输出类指令 指令格式:指令格式:;字节输入:字节输入:ALPORT8 (8位端口位端口) ;地址为;地址为PORT的端口中将一字节数据读入的端口中将一字节数据读入AL中。中。;字输入字输入: ALPORT8,AHPORT8+1 ;从两个连续端口中将一个字读入;从两个连续端口中将一个字读入AX累加器中。累加器中。字节输入字节输入l ;:其中其中DX的内容为外设地址,范围的内容为外设地址,范围0000-0FFFFH,共共64K个个I/O端口。端口。;字输入字输入n3.3.1数据传
35、送类指令数据传送类指令 363.3指令系统指令系统 指令格式:指令格式: ;字节输出:字节输出:PORT8AL ;字输出字输出(PORT8+1), PORT8) AX字节输出字节输出 (DX)AL ;字输出字输出 (DX)+1),(DX)AX 指令操作:将指令操作:将AL(字节)或(字节)或AX(字)数据写到端(字)数据写到端口。口。n3.3.1数据传送类指令数据传送类指令373.3指令系统指令系统u 例例 3-3-1-13-1 ;AL从从F1H端口读入一个字节端口读入一个字节 ; AL80H端口的内容端口的内容 ;AH 81H端口的内容端口的内容 ; DX端口地址端口地址210H ; AL2
36、10H端口的内容端口的内容u 例例3-3-1-13-2 ;85H端口端口 AL ;FF4H端口端口 AL ;DX指向指向300H ;300H端口端口 AL ; 301H端口端口 AHn3.3.1数据传送类指令数据传送类指令383.3指令系统指令系统MOV DST, SRCMOV DST, SRC XCHG DST XCHG DST,SRCSRCPUSH SRCPUSH SRCPOP DSTPOP DSTPUSHF LAHF(Load AH With Flags)将标志寄存器的低)将标志寄存器的低8位送位送AH上述数据传送数指令对标志位无影响上述数据传送数指令对标志位无影响lSAHF(Store
37、 AH Into Flags) ;将;将AH的内容送标志寄存器的低的内容送标志寄存器的低8位,位,它的执行刷新了它的执行刷新了SF, ZF, AF, PF, CF标志位。标志位。lPOPF POPF (恢复原先保存的值)(恢复原先保存的值)n3.3.1数据传送类指令数据传送类指令393.3指令系统指令系统 n8086/80888086/8088的算术运算指令包括二进制运算及十进制运算指令。的算术运算指令包括二进制运算及十进制运算指令。有加、减、乘、除四种基本运算,及各种调整操作指令等。有加、减、乘、除四种基本运算,及各种调整操作指令等。 ;DSTDST+SRC :目的操作数与源操作数相加,结果
38、送目的操作数:目的操作数与源操作数相加,结果送目的操作数:DST可以是寄存器或存储器,而可以是寄存器或存储器,而SRC可以是立可以是立即操作数、寄存器或存储器,但即操作数、寄存器或存储器,但DST、SRC不能同时为存储不能同时为存储器。影响全部状态标志位。器。影响全部状态标志位。 (注:不含段寄存器操作数)(注:不含段寄存器操作数) 例例: ADDAX, SI ; AX(AX)+(SI),16位运算位运算 ADDX, 3 ; X(X)+3, 运算位数由运算位数由X的类型确定的类型确定n3.3.2 算术运算指令算术运算指令 403.3指令系统指令系统 下面的指令无法确定操作数的类型,汇编时将报告
39、错误:下面的指令无法确定操作数的类型,汇编时将报告错误: ADDSI, 5 ;两个操作数都没有明确类型;两个操作数都没有明确类型如果目的操作数是如果目的操作数是DS:SI指向的字节存储单元,可以修改如下:指向的字节存储单元,可以修改如下: ADDBYTE PTR SI, 5加法指令执行后,状态标志加法指令执行后,状态标志CF, OF, ZF, SF, PF, AF按照运算结按照运算结 果被刷新;果被刷新;操作数可以是操作数可以是8位位/16位,源操作数与目的操作数应该有相位,源操作数与目的操作数应该有相 同的类型,不能同时为内存操作数。同的类型,不能同时为内存操作数。n3.3.2 算术运算指令
40、算术运算指令 413.3指令系统指令系统 l ADD REG, REG ;REGREG+REGl ADD REG, MEM ;REGREG+MEMl ADD REG, IMM ;REGREG+IMMl ADD MEM, REG ;MEMMEM+REGl ADD MEM, IMM ;MEMMEM+IMMn3.3.2 算术运算指令算术运算指令 423.3指令系统指令系统 ADC DST, SRC DSTDST+SRC+CF 该指令与该指令与ADD的唯一不同是,除源和目的操作数相的唯一不同是,除源和目的操作数相加外,还要加上进位位加外,还要加上进位位CF的现行值。其五种指令的现行值。其五种指令形式与
41、形式与ADD相似,对标志位影响同相似,对标志位影响同ADD。用于多字节加法运算。用于多字节加法运算。 n3.3.2 算术运算指令算术运算指令 433.3指令系统指令系统 例例2-2-2-1: X=33445566H, Y=89ABCDEFH, 计算计算Z=X+Y(对应的数据段已经定义,变量对应的数据段已经定义,变量X,Y,Z用用DD定义定义) MOV AX, WORD PTR X;取;取X的低的低16位,送入位,送入AX ADD AX, WORD PTR Y;X,Y的低的低16位相加位相加 ;(;(AX)=5566H+0CDEFH=2355H, CF=1 MOV WORD PTR Z, AX;
42、低;低16位的和送位的和送Z的低的低16位位 MOV AX, WORD PTR X+2;取;取X的高的高16位,送入位,送入AX ADC AX, WORD PTR Y+2 ;X, Y的高的高16位及低位进位相加位及低位进位相加 ;(;(AX)=3344H+89ABH+CF=0BCF0H, CF=0 MOV WORD PTR Z+2, AX;高;高16位的和送位的和送Z的高的高16位位n3.3.2 算术运算指令算术运算指令 443.3指令系统指令系统 INC DSRC DSRCDSRC+1 DSRC既表示源操作数,也表示目的操作数。既表示源操作数,也表示目的操作数。l INC REG; REGR
43、EG+1l INC MEM; MEMMEM+1主要用于修改偏移地址或计数次数主要用于修改偏移地址或计数次数 。 n3.3.2 算术运算指令算术运算指令 452.2指令系统指令系统 指令实例:指令实例:例例2-2-2-2: 假设假设COUNT为字变量为字变量l INCBX ;BX(BX)+1l INC COUNT SI ; COUNTSI 字单元字单元;内容加内容加1l INC BYTE PTR COUNT SI ; COUNTSI字节单字节单元;元; 内容加内容加1 INC 指令影响标志位指令影响标志位ZF、SF、OF、PF和和AF。影。影响的结果同响的结果同ADD。但但INC指令对进位标志指令对进位标志CF没有没有影响,保持该指令执行前的状态。影响,保持该指令执行前的状态。n3.3.2 算术运算指令算术运算指令 462.2指令系统指令系统 INC指令的操作数只能是寄存器或存储指令的操作数只能是寄存器或存储器。当器。当使用使用存储器存储器操作数时,不得出现二义性。操作数时,不得出现二义性。例例2-2-2-3 指令指令INC SI 是非法指令是非法指令 原因:不能确定原因:不能确定SI是字还是字节存储器操作数,是字还是字节
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 综合管廊防水工程施工方案
- 市政道路工程作业指导书
- 禽污染风险分级管理制度
- 养老机构老年社团管理制度
- 饮料项目初步设计
- 水泵房交付验收手册
- 微电网示范项目调试与验收方案
- 双层幕墙深化设计方案
- 2026中国工业视觉检测系统精度提升与行业标准化进程评估
- 2026智慧农业行业市场趋势分析及技术升级与投资前景研究报告
- 银行跨境业务操作风险防范措施
- 《人工智能 数据集质量评估要求》
- 漏水维修知识培训课件
- T/CNSS 006-2020学龄前儿童集体餐营养要求
- 3.2代数式的值教学设计人教版数学七年级上册
- 露天矿山环保操作规范培训课件
- 多病共存的慢病管理课件
- 职业健康粉尘防护培训
- DB32-T 5082-2025 建筑工程消防施工质量验收标准
- 易见股份财务舞弊动因及后果研究
- 【MOOC】倾听-音乐的形式与审美-武汉大学 中国大学慕课MOOC答案
评论
0/150
提交评论