140 likes | 338 Views
3 .2 指令系统. 按功能分为: 数据传送指令 算术运算指令 位处理指令(逻辑运算指令) 串操作指令 控制转移指令 处理机控制指令. 一、 数据传送指令. 内存. AX , BX CX , DX SI , DI B P , SP. AH,AL CH , CL DH , DL BH , BL. 立即数. DS , ES,SS. MOV AX,2000H MOV DS,AX. 通用数据传送指令 1、 MOV 指令 格式: MOV dest , src 功能: ( dest) (src ). 例如:
E N D
3.2 指令系统 • 按功能分为: • 数据传送指令 • 算术运算指令 • 位处理指令(逻辑运算指令) • 串操作指令 • 控制转移指令 • 处理机控制指令
一、数据传送指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL 立即数 DS,ES,SS MOV AX,2000H MOV DS,AX • 通用数据传送指令 • 1、MOV 指令 • 格式:MOV dest, src • 功能: (dest) (src) 例如: MOV AX,BX MOV CL,[SI] MOV CL,AL MOV DS,SI MOV DI,[SI] MOV [DI],DH MOV CX,030H MOV BYTE PTR [SI],04 MOV DX,ES • dest不能是CS和立即数 • 不影响标志位 • dest、src不同为段寄存器 • MOV DS, ES • 立即数不能直接送段寄存器 • MOV DS, 2000H
一、数据传送指令 内存 AX,BX CX,DX SI,DI BP,SP AH,AL CH,CL DH,DL BH,BL DS,ES,SS • 通用数据传送指令 • 2、XCHG 指令 • 格式:XCHGdest, src • 功能: (dest) (src) 例如: XCHG AX,BX XCHG CL,[SI]XCHG CL,AL XCHG DS,SI XHCG [DI],DH • 不影响标志位 • 不允许使用段寄存器 • XCHG DS, ES • 不允许使用立即数 • XCHG AX, 2000H
一、数据传送指令 (BX) 30 H F0040 31 H F0041 (DS)=F000H (AL) = 3 32H F0042 例如:0~9的ASCII表,表头 TABLE=040H。 MOV BX, 040H MOV AL, 3 XLAT 指令执行后 (AL)=33H 33 H F0043 TABLE 34 H F0044 AL • 通用数据传送指令 • 3、查表指令XLAT (换码指令 ) • 格式:XLAT • 功能: (AL) ( [(BX) + (AL)] ) • 不影响标志位 • 字节表格(长度不超过256) • 首地址 (BX) • 需转换代码 (AL)
一、数据传送指令 (SS)=1000H (SP)=46H (SP)→ **** 10046 12H 10045 进栈方向 出栈方向 34H 10044 56H 10043 78H 10042 9AH 10041 • 通用数据传送指令 • 4、堆栈操作指令 • 堆栈:“先进后出”的存储区,存在于堆栈段中,SP在任何时候都指向栈顶。 • 进栈指令:PUSH SRC • 执行操作: • (SP) (SP) – 2 • [(SP), (SP+1)] (SRC) • 出栈指令: POP DST • 执行操作: • [ DEST ] (SP)+1, (SP) • (SP) (SP) + 2 • 不影响标志位 • 堆栈操作必须以字为单位。 • 不能用立即寻址方式 • PUSH 1234H • DEST不能是CS • POP CS
AX (SS)=1000H 21H 05H (SP)=46H 2 **** 10046 (SP+1) 进栈方向 21H 10045 (SP) 05H 10044 1 56H 10043 78H 10042 (SP) (SP) – 2 9AH 10041 1 (SP) – 2→(SP)=0044H 2 [(SP), (SP+1)] (SRC) ([10044H])=2105H 例 PUSH AX (AX)=2105H (SS)=1000H (SP)=0046H 栈顶为: =10000H+0046H=10046H 栈底为:(SS)×16+(SP)=10000H+0000H=10000H
(SS)=1000H 21H 05H (SP)=46H (SP) + 2→(SP) **** 10046 (SP)+1 出栈方向 21H 10045 2 (SP) (SP) 1 05H 10044 56H 10043 78H 10042 9AH 10041 CX 2 (SP) + 2→(SP)=0046H 1 (DEST) (SP)+1, (SP) (CX)=2105H 例 POP CX (CX)=1045H (SS)=1000H (SP)=0044H 栈顶为:(SS)×16+(SP) =10000H+0044H=10044H
一、数据传送指令 DS:1000H 0000H (1) AX …… 12H 20H 34H 2012H 56H 2013H 78H 2014H 9AH 2015H • 地址传送指令 • 5、LEA指令——EA地址送寄存器指令。 • 格式:LEA REG, SRC • 功能:(REG) SRC EA地址 例 (1) LEA AX,[2012H] 相当于 MOV AX,2012H (2) LEA SI,[BX] 相当于 MOV SI,BX (3) LEA DI,[BX+SI] 无直接对应指令,DI (BX+SI) • 不影响标志位 • REG 16位寄存器,不能是段寄存器。 • SRC必须为存储器寻址方式
一、数据传送指令 DS:1000H 0000H (DI) SI …… 34H 56H 2012H 34H 例 LDS SI,[2012H] 操作: SI (2013H:2012H) DS (2015H:2014H) 56H 2013H 2014H 78H 2015H 9AH 78H 9AH 7、LES指令——指针地址传送ES指令 格式:LES REG, SRC 功能:(REG) (SRC) (ES) (SRC+2) 例 LES DI,[2012H] 操作: DI (2013H:2012H) ES (2015H:2014H) DS (ES) 6、LDS指令——指针地址传送DS指令 格式:LDS REG, SRC 功能: (REG) (SRC) (DS) (SRC+2) • 不影响标志位 • REG 16位寄存器,不能是段寄存器。 • SRC为双字存储单元
一、数据传送指令 • 标志寄存器传送指令 影响标志位 8、 LAHF——标志送AH指令 格式:LAHF 功能:(AH) (PSW的低字节) 9、SAHF——AH送标志寄存器指令 格式:SAHF 功能:(PSW的低字节) (AH) 10、PUSHF——标志进栈指令 格式: PUSHF 功能:(SP) (SP) – 2 [(SP), (SP+1)] PSW 11、POPF——标志出栈指令 格式: POPF 功能:PSW ((SP)+1, (SP)) (SP) (SP) + 2
一、数据传送指令 • 输入输出指令 12、输入指令(I/O CPU) PORT端口地址为8位: 格式: IN AL, PORT (字节) IN AX, PORT (字) 功能: (AL) (PORT)(字节) (AX) (PORT+1, PORT) (字) • 不影响标志位 • 端口号00H~FFH可直接在指令中指定 • 端口号 256,端口号 DX PORT端口地址为16位: 格式: IN AL, DX (字节) IN AX, DX (字) 功能: (AL) ( (DX) ) (字节) (AX) ( (DX)+1, (DX) ) (字)
一、数据传送指令 • 输入输出指令 13、输出指令( CPU I/O ) PORT端口地址为8位: 格式: OUT PORT,AL (字节) OUT PORT ,AX (字) 功能: (PORT) (AL) (字节) (PORT+1, PORT) (AX)(字) • 不影响标志位 • 端口号00H~FFH可直接在指令中指定 • 端口号 256,端口号 DX PORT端口地址为16位: 格式: OUT DX ,AL (字节) OUT DX ,AX (字) 功能: ( (DX) ) (AL) (字节) ( (DX)+1, (DX) ) (AX) (字)
一、数据传送指令 例1: IN AX, 28H ; MOV DX, 28H ; IN AX, DX MOV DATA_WORD, AX 例2: MOV DX, 3FCH IN AX,DX 例3: OUT 5, AL 例4: MOV DX,108H OUT DX,AX
课后作业: • P128 3.1 (3) (4) (5) • P128 3.2 (1) (2) (3) (4) (5)