第二章
1. 将下列十进制数转换成二进制和十六进制
(1)129.75 = 100000001.11B= 81.CH
(2)218.8125 = 1101 1010.1101B = DA.DH
(3) 15.625 = 1111.101B = F.AH
(4)47.15625 = 101111.00101B = 2F.28H
2. 将下列二进制数转换成十进制和十六进制
(1)111010B = 58 = 3AH
(2)10111100.11B = 188.875= BC.E H
(3) 0.11011B = 0.84375= 0.D8 H
(4)11110.01B = 30.25= 1E.4H
字符串截取20位4、完成下列16进制的加减法运算。
(1)0D14B H (2) 9C28.E H
(3) 1678 .FC H (4) -80D7 H
5. 计算下列表达式的值
(1)128.8125+10110101.1011B+1F.2H
= ( 101010101.101 ) B
(2)287.68-10101010.11B+8E.EH
=( 103.CE ) H
(3) 18.9+1010.1101B+12.6H-1011.1001B
= ( 36.525 ) D
7. 写出下列以补码表示的二进制数的真值:
1)[X]补= 1000 0000 0000 0000
X = - 1000 0000 0000 0000 = - 215 = - 32768
(2)[Y]补= 0000 0001 0000 0001
Y = + 0000 0001 0000 0001 = +257
(3)[Z]补= 1111 1110 1010 0101
X = - 000 0001 0101 1011 = - 347
(4)[A]补= 0000 0010 0101 0111
X = + 0000 0010 0101 0111 = +599
9、设有变量……..
X+Y = 1B8 H Y+Z =161 H
Y+Z=13B H Z+V=0CC H
(1) 不正确不正确不正确正确
(2)正确正确正确溢出
12. 试计算下列二进制数为无符号数、原码、反码、补码、8421BCD码时分别代表的数值大小。若为非8421BCD数时请指出。
(1)10001000B
无符号数:27+23= 136
原码: - 000 1000 = - 8
反码: - 111 0111 = - 119
补码: - 111 1000 = - 120
8421BCD码: 88
2)00101001B
无符号数:25+23+ 20 = 41
原码: 41
反码: 41
补码: 41
8421BCD码: 29
3)11001001B
无符号数:27+26+ 23+20 = 201
原码: - 100 1001 = - 73
反码: - 011 0110 = - 54
补码: - 011 0111 = - 55
8421BCD码:非8421BCD码
(4)10010011B
无符号数:27+24+ 21+20 = 147
原码: - 001 0011 = - 19
反码: - 110 1100 = - 108
补码: - 110 1101 = - 109
8421BCD码: 93
第三章 80X86微处理器
1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答:(1) BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2) EU的作用:执行指令,并为BIU提供所需的有效地址。
(3) 并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?
答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:
(1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。AX,BX,CX,DX
(2) 地址寄存器:一般用来存放段内的偏移地址。SP,BP,SI,DI
(3) 段寄存器:用于存放段地址. CS,DS,ES,SS
(4) 控制寄存器 ,FLAGS,IP
具体寄存器略。
3.8086/8088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?
答:可用来指示段内偏移地址的寄存器共有6个:IP、SP、BP、BX、SI、DI.
4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?
答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是:
(1) 状态标志:用来反映算术和逻辑运算结果的一些特征。CF,AF,PF,ZF,SF,ZF
(2) 控制标志位:用来控制CPU的操作,由程序设置或清除。DF,IF,TF.
具体寄存器位介绍略。
5.8086/8088CPU的地址总线有多少位?其寻址范围是多少?
答:8086/8088地址总线有20根,可寻址1MB空间,范围:00000H~0FFFFFH.
6.什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少?
答:(1) 指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。
(2) 指令队列的作用:存放EU将要执行的指令,使CPU的取指和执行指令能并行工作。
(3) 指令队列的长度:8086为6个字节,8088为4个字节。
7.Intel8086与8088有何区别?
答:8086与8088的区别有三处:
(1) 外部数据总线位数不同(即地址/数据分时复用引脚条数不同);8086为16位:AD15~AD0 。
8088为 8位:AD7~AD0 。
(2) 内部指令队列缓冲器长度不同;
8086有6个字节。当指令队列出现2个空字节时,BIU将取指补充。
8088有4个字节。当指令队列出现1个空字节时,BIU将取指补充。
(3) 外部某些控制总线定义不同。
① 8086的28号引脚定义为M/IO(S2),8088定义为IO/M(S2)
② 8086的34号引脚定义为BHE/S7,8088定义为SS0/(HIGH)
第4章作业
1、指出源操作数的寻址方式
⑴ MOV BX,2000H ;立即数寻址
⑵ MOV BX,[2000H];直接寻址
⑶ MOV BX,[SI];寄存器间接寻址
⑷ MOV BX,[SI+2000H] ;寄存器相对寻址
⑸ MOV [BX+SI],AL ;寄存器寻址
⑹ ADD AX,[BX+DI+80] ;基址变址相对寻址
⑺ MUL BL ;寄存器寻址
⑻ JMP BX ;段内间接寻址
⑻ SUB AX, BX ;寄存器寻址
⑼ IN AL,DX ;端口间接寻址
⑽ INC WORD PTR [BP+10H] ;寄存器相对寻址
⑾ MOV CL,LENGTH VAR ;立即数寻址
⑿ MOV BL,OFFSET VAR1 ;立即数寻址
2、指出下列指令是否正确
(1) MOV DS,0100H;错误。源操作数是立即数时,目的操作数不能是段寄存器
(2) MOV BP,AL;错误。操作数类型不一致
(3) XCHG AH,AL ;正确。
(4) OUT 310H,AL;错误。端口直接寻址的范围应在0~FFH之间
(5) MOV BX,[BX] ;正确。
(6) MOV ES:[BX+DI] ,AX ;正确。
(7) MOV AX,[SI+DI] ;错误。存储器寻址中有效地址不能由两个变址寄存器组成
(8) MOV SS:[BX+SI+100H],BX ;正确。
(9) AND AX,BL ;错误。操作数类型不一致
(10) MOV DX,DS:[BP] ;正确
(11) ADD [SI],20H ;错误,目的操作数类型不明确。
(12) MOV 30H,AL ;错误,目的操作数不能为立即数
(13) PUSH 2000H;错误。堆栈指令的操作数不能是立即数
(14) MOV [SI],[2000H];错误。两个操作数不能同时为存储器操作数(15) MOV SI,AL ;错误。操
作数类型不一致
(16) ADD [2000H],20H;错误,目的操作数类型不明确
(17) MOV CS,AX;错误,目的操作数不能为代码段寄存器
(18) INC [DI] ;错误,目的操作数类型不明确
(19) OUT BX,AL;错误。端口间接寻址的寄存器只能是DX寄存器
(20) SHL BX,3 ;错误。移位次数大于1时应该用CL寄存器
(21) XCHG CX,DS ;错误。交换指令中不能出现段寄存器
(22) POP AL ;错误。堆栈指令的操作数只能是字操作数(即16位操作数)
3. 写出下列指令中存储器操作数物理地址的计算表达式:
1)MOV AL, [DI] (DS)×10H + ( DI )
(2)MOV AX, [BX+SI] (DS)×10H + ( BX ) + (SI)
(3) MOV 5[BX+DI],AL (DS)×10H + ( BX ) + (DI) + 5
(4)ADD AL, ES:[BX] (ES)×10H + ( BX )
5) SUB AX, [1000H] (DS)×10H + 1000H
(6)ADC AX, [BX+DI+2000H (DS)×10H+(BX)+(DI)+2000H
(7) MOV CX, [BP+SI] (SS)×10H + ( BP ) + (SI)
(8)INC BYTE PTR[DI] (DS)×10H + ( DI )
4. 若(DS)=3000H,(BX)=2000H,(SI)=0100H,
(ES)=4000H,计算下列各指令中存储器操作数的物理地址。
1)MOV [BX],AL
(DS)×10H + ( BX ) = 32000H
(2)ADD AL, [BX+SI+1000H]
(DS)×10H + ( BX ) + (SI)+1000H = 33100H
(3)MOV AL,[BX+SI]
(DS)×10H + ( BX ) + (SI) = 32100H
(4)SUB AL, ES:[BX]
(ES)×10H + ( BX ) = 42000H
5. 若(CS)=E000H,说明代码段可寻址物理存储空间的范围。
代码段物理地址为:(CS):(IP)
所以可寻址物理地址范围为:
(CS)×10H+(IP),其中IP的为16位寄存器,取值范围为:
0000H~0FFFFH
所以有寻址范围为: 0E0000H~0EFFFFH
6. 设(SP)=2000H,(AX)=3000H,(BX)=5000H,问执行下面程序段后:
PUSH AX
PUSH BX
POP AX
(SP)=1FFEH,(AX)=5000H, (BX)=5000H
7、试比较SUB AL,09H与CMP AL,09H这两条指令的异同。若(AL)=08H,分别执行上述两条指令后,(AL) =?,CF=?,OF=0,ZF=?
(1) 相同点:两条指令都能完成(AL)-09H的功能,并且都影响六个状态标志位;
不同点:SUB指令将运算结果回送到AL寄存器中,而CMP指令不回送。
(2) ① (AL)=FFH,② (AL)=08H, CF=1,OF=0,ZF=0
8、分别执行下列指令,试求AL的内容及各状态标志位的状态。
(1) MOV AL,19H ;
ADD AL,61H ;(AL)=7AH
OF=0 SF=0 ZF=0 AF=0 PF=0 CF=0
(2) MOV AL,19H ;
SUB AL,61 ;(AL)=0DCH
OF=0 SF=1 ZF=0 AF=1 PF=0 CF=1 MOV AL,19H ;
SUB AL,61H ;(AL)=0B8H
OF=0 SF=1 ZF=0 AF=0 PF=1 CF=1 (3) MOV AL,5DH ;
ADD AL,0C6H ;(AL)=23H
OF=0 SF=0 ZF=0 AF=1 PF=0 CF=1
(4) MOV AL,7EH ;
SUB AL,95H ;(AL)=0E9H
OF=1 SF=1 ZF=0 AF=0 PF=0 CF=1
9. 选用最少的指令,实现下述要求的功能。
1)AH的高4位清0
AND AH,0FH
(2)AL的高4位取反
XOR AL, 0F0H
(3)AL的高4位移到低4位,高4位清0
MOV CL,4
SHR AL,CL
(4)AH的低4位移到高4位,低4位清0
MOV CL,4
SHL AL,CL
11. 设初值(AX)=0119H,执行下列程序段后(AX)=?
MOV CH,AH
ADD AL,AH (AX)=011AH
DAA (AX)=0120H 压缩型BCD码调整XCHG AL,CH (AL)=01H
ADC AL,34H (AX)=0135H
DAA (AX)=0135H
MOV AH,AL (AH)=35H
MOV AL,CH (AL)=20H
结果:(AX)=3520H
12. 指出下列程序段的功能
1)
MOV CX,10
CLD
LEA SI,First
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论