微机原理(8086指令系统)
- 格式:doc
- 大小:475.00 KB
- 文档页数:20
微机原理及应⽤(陈继红、徐晨)课后习题答案微机原理及应⽤(陈继红、徐晨)课后习题答案第三章8086/8088指令系统和寻址⽅式习题答案(部分)3.1总结计算机中⼗进制、⼆进制、⼋进制及⼗六进制数的书写形式。
123D、0AFH、77Q、1001110B分别表⽰什么计数制的数?答案:123D、0AFH、77Q、1001110B分别表⽰⼗进制、⼗六进制、⼋进制、⼆进制。
3.2字长为8位、16位⼆进制数的原码、补码表⽰的最⼤数和最⼩数分别是什么?答案:8位原码表⽰的最⼤数:(27-1)、8位补码表⽰的最⼤数:(27-1)、8位原码表⽰的最⼩数:-(27-1)、8位补码表⽰的最⼩数-27。
16最⼩数:-215。
3.3答案:7DH。
(2)255(3)7248H。
(4)509013E2H。
3.4答案:240D0F0H。
128D80H。
(3)11111111⼗进制数:255D;⼗六进制数:0FFH。
(4)01010101⼗进制数:85D;⼗六进制数:55H。
3.5把下列⽆符号⼗六进制数分别转换为⼗进制数和⼆进制数。
(1)FF(2)ABCD(3)123(4)FFFF答案:(1)FF⼗进制数:255D;⼆进制数;11111111B。
1010101111001101B。
(3)123⼗进制数:291D;⼆进制数;000100100011B。
(4)FFFF⼗进制数:65535D;⼆进制数;1111111111111111B。
3.6分别⽤8位⼆进制数和16位⼆进制数写出下列⼗进制数的原码和补码。
(1)16(2)-16(3)+0(4)-0(5)127(6)-128(7)121(8)-9 答案:(1)16800010000(2)-16800010000(3)+0800000000(4)-0800000000(5)127801111111(6)-128810000000(7)1218:01111001;16位⼆进制数原码:0000000001111001补码:0000000001111001。
西北师范大学计算机科学与技术系版权声明本电子教案内容为西北师范大学计算机科学系微机原理与汇编语言课讲义,大家可以自己个人使用。
但由于本教案同时也部分使用了其他人所写讲义或CAI课件的内容,因此禁止使用本材料进行任何商业性或赢利性活动。
同时作者不承担由于使用本教案而引发的其他连带责任。
转载时请保留本版权声明。
-索国瑞suogr@8086微处理器❑概要❑功能结构❑基本执行环境❑基本编程寄存器❑存储器组织❑I/O端口组织概要❑8086微处理器由Intel公司于1978年推出的16位微处理器,随后被IBM公司用于新开发的IBM PC微型计算机上,由此奠定其MPU霸主地位❑8086采用HMOS工艺制造,约含29000个晶体管❑8086有16根数据线和20根地址线,可寻址1MB 内存空间❑8086工作时只要单一的5V电源和单相时钟,时钟频率为5MHz。
❑8086CPU已经发展成为一个系列,其早期的系列成员以16位微处理器8086和准16位微处理器8088为基础,加上各种支持芯片,以及一些提升系统功能的协处理器(如8087、8089)等组成。
❑从8086开始,Intel 先后推出了80286、80386、80486、Pentium、Pentium MMX、Pentium PRO、PII、PIII、PIV微处理器,形成了80X86系列,其基本设计结构被称为IA-32结构❑新的IA-64结构也正在推出,目前已经投入实际运行的有安腾-itenium系列CPU,并且开始出现具有双内核的CPU❑INTEL公司80X86架构系列CPU发展简图 4004:1971年,4位,2300晶体管/片,640B存储器8080:1974年,8位,6000晶体管/片,64KB存储器8086:1978年,16位,29000晶体管/片,1M存储器,奠定了最基本的X86汇编指令集 80286:1982年,16位,134000晶体管,16MB存储器80386:1985年,32位,32位总线,275000晶体管,4GB存储器,速度5 MIPS,IA-3280486:1989年,32位,1.2M晶体管,片内数学协处理器Pentium:1993年,32位数据路径,64位总线,3.1M晶体管,2路超标量流水线,深度5,速度90 MIPS,4GB存储器Pentium Pro:1995年,64位数据路径,64位总线,5.5M晶体管,3路超标量流水线,深度12,速度300MIPS,架构属P6,64GB存储器Pentium II:1997年,32位,7.5M晶体管,加MMX指令,开始出现XEON、K6芯片Pentium III:1999年,64位1Gbps系统总线,9.5M系统晶体管,SSE指令,超标量流水线处理机,深度10Pentium IV:2000年,64位32Gbps系统总线,42M晶体管,SSE2指令,超标量处理机,深度至少为20,以上为IA-32结构Itanium :2001年,IA-64结构,10级深度流水线16TB存储器,开始在服务器领域应用 Itanium II:……在推出Intel 8086的同时,Intel公司还推出了Intel 8088。
第3章8086/8088指令系统与寻址方式习题3.3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。
(1)MOV BX,12 ;目标操作数为寄存器寻址(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H(4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H(8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H(9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。
(1)XCHG CS,AX ;错,CS不能参与交换(2)MOV [BX],[1000] ;错,存储器之不能交换(3)XCHG BX,IP ;错,IP不能参与交换(4)PUSH CS(5)POP CS ;错,不能将数据弹到CS中(6)IN BX,DX ;输入/输出只能通过AL/AX(7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元(8)MOV CS,[1000] ;CS不能作为目标寄存器(9)MOV BX,OFFSET VAR[SI] ;OFFSET只能取变量的偏移地址(10)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址(11)MOV COUNT[BX][SI],ES:AX ;AX是寄存器,不能加段前缀3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么?当前栈顶的地址=2FF00H当执行PUSH BX 指令后,栈顶地址=2FEFEH(2FEFEH)=57H(2FEFFH)=34H3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。
第3章8086CPU指令系统1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’, ’word’, ’WORD’;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。
解:var1 DW 4512H,4512,-1,100/3,10H,65530var2 DB ’BYTE’,’word’,’WORD’buf1 DB 100 DUP(?)buf2 DB 7 DUP(5 DUP(55H),10 DUP(240))var3 DB LENGTH buf1pointer DW var1,buf1 (或者pointer DW OFFSET var1,OFFSET buf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:var1 DB 12,-12,20/6,4 DUP(0,55H)var2 DB ‘Assemble’var3 DW ‘AB’, ‘cd’, ‘E’var4 DW var2var5 DD var2解:3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):(1)MOV SI,100 (2)MOV BX,VAR1[SI](3)MOV AX, [BX] (4)MOV AL, [DX](5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB [DI], 78H (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, [SI](25)ADC CS:[0100], AH (26)SBB VAR1-5,154解:(1)MOV SI,100 正确。
8086指令系统一览表 类型 汇编指令格式 功 能 操作数说明 时钟周期数 字节数 数 据 传 送 类
MOV dst, src (dst) ← (src) mem, reg reg, mem reg, reg reg, imm mem, imm seg, reg seg, mem mem, seg reg, seg mem, acc acc, mem 9+EA 8+EA 2 4 10+EA 2 8+EA 9+EA 2 10 10 2 ~ 4 2 ~ 4 2 2 ~ 3 3 ~ 6 2 2 ~ 4 2 ~ 4 2 3 3 PUSH src (SP) ← (SP)-2 ((SP)+1, (SP)) ← (src) reg seg mem 11 10 16+EA 1 1 2 ~ 4 POP dst (dst) ← ((SP)+1, (SP)) (SP) ← (SP)+2 reg seg mem 8 8 17+EA 1 1 2 ~ 4 XCHG op1, op2 (op1) ←→ (op1) reg, mem reg, reg reg, acc 17+EA 4 3 2 ~ 4 2 1 IN acc, port IN acc, DX (acc) ← (port) (acc) ← ((DX)) 10 8 2 1 OUT port, acc OUT DX, acc (port) ← (acc) ((DX)) ← (acc) 10 8 2 1 XLAT 11 1 LEA reg, src (reg) ← src reg, mem 2+EA 2 ~ 4 LDS reg, src (reg) ← src (DS) ← (src+2) reg, mem 16+EA 2 ~ 4
LES reg, src (reg) ← src (ES) ← (src+2) reg, mem 16+EA 2 ~ 4 LAHF (AH) ← (FR低字节) 4 1 SAHF (FR低字节) ← (AH) 4 1 PUSHF (SP) ← (SP)-2 ((SP)+1, (SP)) ← (FR低字节) 10 1
POPF (FR低字节) ← ((SP)+1, (SP)) (SP) ← (SP)+2 8 1 算 术 运 算 类
ADD dst, src (dst) ← (src) + (dst) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 ADC dst, src (dst) ← (src) + (dst) + CF mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 INC op1 (op1) ← (op1)+1 reg mem 2 ~ 3 15+EA 1 ~ 2 2 ~ 4 SUB dst, src (dst) ← (src) - (dst) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 SBB dst, src (dst) ← (src) - (dst) - CF mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 DEC op1 (op1) ← (op1) - 1 reg mem 2 ~ 3 15+EA 1 ~ 2 2 ~ 4 NEG op1 (op1) ← 0 - (op1) reg mem 3 16+EA 2 2 ~ 4 CMP op1, op2 (op1) - (op2) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 9+EA 9+EA 3 4 10+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 MUL src (AX) ← (AL) * (src) (DX, AX) ← (AX) * (src) 8位reg 8位mem 16位reg 16位mem 70 ~ 77 (76 ~ 83)+EA 118 ~ 133 (124 ~ 139)+EA 2 2 ~ 4 2 2 ~ 4 IMUL src (AX) ← (AL) * (src) (DX, AX) ← (AX) * (src) 8位reg 8位mem 16位reg 16位mem 80 ~ 98 (86 ~ 104)+EA 128 ~ 154 (134 ~ 160)+EA 2 2 ~ 4 2 2 ~ 4 DIV src (AL) ← (AX) / (src) 的商 (AH) ← (AX) / (src) 的余数 (AX) ← (DX, AX) / (src) 的商 (DX) ← (DX, AX) / (src) 的余数 8位reg 8位mem 16位reg 16位mem 80 ~ 90 (86 ~ 96)+EA 144 ~ 162 (150 ~ 168)+EA 2 2 ~ 4 2 2 ~ 4 IDIV src (AL) ← (AX) / (src) 的商 (AH) ← (AX) / (src) 的余数 (AX) ← (DX, AX) / (src) 的商 (DX) ← (DX, AX) / (src) 的余数 8位reg 8位mem 16位reg 16位mem 101 ~ 112 (107 ~ 118)+EA 165 ~ 184 (171 ~ 190)+EA 2 2 ~ 4 2 2 ~ 4 DAA (AL) ← AL中的和调整为组合BCD 4 1 DAS (AL) ← AL中的差调整为组合BCD 4 1 AAA (AL) ← AL中的和调整为非组合BCD (AH) ← (AH)+调整产生的进位值 4 1
AAS (AL) ← AL中的差调整为非组合BCD (AH) ← (AH)-调整产生的进位值 4 1 AAM (AX) ← AX中的积调整为非组合BCD 83 2 AAD (AL) ← (AH) * 10 + (AL) (AH) ← 0 (注意是除法进行前调整被除数) 60 2
逻 辑 运 算 类
AND dst, src (dst) ← (dst) ∧ (src) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 OR dst, src (dst) ← (dst) ∨ (src) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 NOT op1 (op1) ← (1op) reg mem 3 16+EA 2 2 ~ 4 XOR dst, src (dst) ← (dst) ⊕ (src) mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 16+EA 9+EA 3 4 17+EA 4 2 ~ 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 TEST op1, op2 (op1) ∧ (op2) reg, mem reg, reg reg, imm mem, imm acc, imm 9+EA 3 5 11+EA 4 2 ~ 4 2 3 ~ 4 3 ~ 6 2 ~ 3 SHL op1, 1 SHL op1, CL 逻辑左移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 SAL op1, 1 SAL op1, CL 算术右移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 SHR op1, 1 SHR op1, CL 逻辑右移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 SAR op1, 1 SAR op1, CL 算术右移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 ROL op1, 1 ROL op1, CL 循环左移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 ROR op1, 1 ROR op1, CL 循环右移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 RCL op1, 1 RCL op1, CL 带进位位的循环左移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 RCR op1, 1 RCR op1, CL 带进位位的循环右移 reg mem reg mem 2 15+EA 8 + 4/bit 20+EA+ 4/bit 2 2 ~ 4 2 2 ~ 4 串 操 作 类
MOVSB MOVSW ((DI)) ← ((SI)) (SI) ← (SI)±1, (DI) ← (DI)±1 ((DI)) ← ((SI)) (SI) ← (SI)±2, (DI) ← (DI)±2 不重复:18 重复:9+17/rep 不重复:18 重复:9+17/rep 1 1 STOSB STOSW ((DI)) ← (AL) (DI) ← (DI)±1 ((DI)) ← (AX) (DI) ← (DI)±2 不重复:11 重复:9+10/rep 不重复:11 重复:9+10/rep 1 1 LODSB LODSW (AL) ← ((SI)) (SI) ← (SI)±1 (AX) ← ((SI)) (SI) ← (SI)±2 不重复:12 重复:9+13/rep 不重复:12 重复:9+13/rep 1 1