第一章
2、完成下列数制之间的转换。
(1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H
3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。 答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。 组合型:254=(001001010100)BCD
非组合型:254=(00000010 00000101 00000100)BCD
7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少?
答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。+32767~ -32768。
9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。 (1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确
[X-Y]补=10111001B=00010010+10100111=(-71D)补正确
(2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确
[X-Y]补=11101001+00001011=11110100B=(-12D)补正确
(3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确
[X-Y]补=00010010+00001111=00100001B=(33D)补正确
(4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确
[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。
13、微型计算机的主要性能指标有哪些?
答:CPU字长、存储器容量、运算速度、CPU内核和IO工作电压、制造工艺、扩展能力、软件配置。
第二章
2、8086标志寄存器包含哪些标志位?试说明各标志位的作用。
答:进位标志:CF;奇偶校验:PF;辅助进位:AF;零标志:ZF;符号标志:SF;溢出标志:OF。
5、逻辑地址与物理地址有什么区别?如何将逻辑地址转换为物理地址?
答:物理地址是访问存储器的实际地址,一个存储单元对应唯一的一个物理地址。逻辑地址是对应逻辑段内的一种地址表示形式,它由段基址和段内偏移地址两部分组成,通常表示为段基址:偏移地址。
物理地址=段基址*10H+偏移地址。
6、写出下列逻辑地址的段基址、偏移地址和物理地址。 (1)2314H:0035H (2)1FD0H:000AH 答:(1)段基址:2314H;偏移地址:0035H;物理地址:23175H。 (2)段基址:1FD0H;偏移地址:000AH;物理地址:1FD0AH。 8、设(CS)=2025H,(IP)=0100H,则当前将要执行指令的物理地址是多少? 答:物理地址=(CS)*10H+(IP)=20350H
9、设一个16字的数据区,它的起始地址为70A0H:DDF6H(段基址:偏移地址),求这个数据区的首字单元和末字单元的物理地址。
答:首字:70A0*10H+DDF6H=7E7F6H
末字单元地址=起始地址+(字数-1)*2=7E7F6H+(16-1)*2=7E814H。 13、80486CPU内部由哪些主要部件构成?有哪几种工作模式? 答:(1)总线接口单元、指令预取单元、指令译码单元、控制单元,整数运算单元,浮点运算单元,段预存储器管理单元,高速缓冲单元。
(2)实地址模式、保护虚拟地址模拟、虚拟8086模式
14、80486CPU存储器最大可寻址空间是多少?虚拟存储空间是多少?两者有何区别? 答:最大可寻址空间是4GB,虚拟存储空间是64TB。前者为实地址,虚拟存储空间为外部存储管理器。
第三章
4、指出下列指令中的源操作数和目标操作数的寻址方式。
(1)MOV BX,1000H源操作数:立即寻址;目标操作数:寄存器寻址
(2)MOV AL,[BX] 源操作数:寄存器间接寻址;目标操作数:寄存器寻址
(5)MOV [DI+1000H],BX 源操作数:寄存器寻址;目标操作数:寄存器相对寻址 (6)MOV [1000H],CX 源操作数:寄存器寻址;目标操作数:直接寻址 5、设(DS)=2000H、(ES)=2100H、(SS)=1500H、(BX)=0100H、(BP)=0040、(SI)=00A0H、(DI)=0120H,在指令MOV AX,src中,求用下列表示源操作数src的有效地址EA和物理地址PA各是多少?
(1)100H[BX] EA=(100H+0100H)=0200H ; PA=2000*10H+0200H=20200H (2)ES:[BX+DI] EA=0100H+0120H=0220H ;PA=2100*10H+0220H=21220H (3)[BP] EA=0040H ; PA=1500*10H+0040H=15040h
(4)ES:[BX+10H] EA=0100H+0010H=0110H ;PA=21000H+0110H=21110H 6、指出下列指令中的错误,并改正。
(1)MOV BL,30A0H操作数不匹配改:MOV BX,30A0H
(2)MOV 0010H,AL立即数不可以作为目标操作数改:MOV AX,0010H (3)XCHG AL,BX操作数类型不匹配改:XCHG AX,BX
(4)MOV [AX],3456H立即数送入存储器需要说明改:MOV WORDPTR [AX],3456H (5)PUSH AL堆栈以字为操作单元改:PUSH AX
(6)POP CS POP不可以用CS为目标操作数改:POP AX (7)MOV DS,1000H立即数不能直接送入段寄存器改:MOV AX,1000H MOV DS,
AX
(8)MOV [BX],[1000H]存储器不可以相互传送改:MOV AX,[1000H]
MOV [BX],AX
(9)LDS (BX),[1000H]LDS使用时期目标为16位通用寄存器改:LDS BX,[1000H] (10)LEA BX,CX LEA源操作数为存储器改:LEA BX,[CX]
7、已知(AX)=4A0BH,[1020H]单元中的内容为260FH,写出下列每条指令单独执行后的结果。
(1)MOV AX,1020H ;(AX)=1020H (2)XCHG AX, [1020H] ;(AX)=260FH (3)MOV AX,[1020H] ;(AX)=260FH (4)LEA AX,[1020H] ;(AX)=1020H
10、设一个堆栈段共有100H个字节单元,堆栈的起始地址为1250H:0000H,若在堆栈中存有5个字数据,问:
(1)栈顶的物理地址多少?
(2)栈底的物理地址是多少? (3)当前SS和SP的内容是多少?
(4)若弹出两个数据,SP的内容是多少? 答:栈底:12600H 栈顶:12600-A=125F6H SS:[1250H:0000H ] SP: [1250H:00F6H ]
(4)弹出两个数据后,SP内容,00F6+4=00FAH 则,SP:[1250H:00FAH ]
11、编程完成下列程序段,根据运算结果置标志位OF、SF、ZF、AF、PF、CF,并分析程序执行结果是否正确?为什么?(n=8) (2)122-64 (4)-68+(-72) 答:(2)程序:MOV AL,120 MOV BL,64 SUB AL,BL
计算结果:00111010 OF=0 SF=0 ZF=0 AF=0 PF=1 CF=0 (4)程序: MOV AL,-68 MOV BL,-72 ADD AL,BL
计算结果:01110100 有溢出 OF=1 SF=0 ZF=0 AF=1 PF=1 CF=1 17、判断下列指令格式的对与错,并解释错在哪里。 (1)ADD 25H,AX错;目标操作数不可以为立即数 (2)INC BX,1错;INC只有目标操作数
(3)MUL AL,BL错;乘法指令目标操作数是隐含的 (4)SUBB AL,3错;减法指令是SUB (5)DAA AL错;DAA后无操作数
(6)NEG CX,0错;NEG后只有目标操作数 (7)CMP [BX],1000H[BX+SI]对
22、写出下列程序段执行后的结果。 MOV CL,4 MOV AL,87 MOV DL,AL AND AL,0FH OR AL,30H SHR DL,CL OR DL,30H (AL)= 37H,(DL)=35H
27、试用CMP指令和条件转移指令实现下列判断 (1)AX和CX中的内容为无符号数:
若(AX)>(CX)则转至BIGGER符号执行;若(AX)<(CX)则转至LESS符号执行。 (2)BX和DX中的内容为无符号数:
若(BX)>(DX)则转至BIGGER符号执行;若(BX)<(DX)则转至LESS符号执行。 答:(1)CMP AX,CX JA BIGGER JB LESS
(2)CMP BX,DX