清华大学自动化系罗予频计原作业答案一

  • 格式:docx
  • 大小:34.23 KB
  • 文档页数:7

3. 将下列二进制数转换为十进制数:〈1〉01101100B 〈2〉00101101B 〈3〉0.011B 〈4〉0.01101B 〈5〉1001.1001B 解:〈1〉01101100B=64+32+8+4=108D〈2〉00101101B=32+8+4+1=45D〈3〉0.011B=2-2+2-3=0.375D〈4〉0.01101B=2-2+2-3+2-5=0.40625D〈5〉1001.1001B=8+1+0.5+0.0625=9.5625D4. 将下列十进制数转换为二进制数:〈1〉17D 〈2〉121D 〈3〉0.4375D 〈4〉0.59375D 〈5〉125.125D解:〈1〉17D =24+20=10001B〈2〉121D =26+25+24+23+20=1111001B〈3〉0.4375D =2-2+2-3+2-4=0.0111B〈4〉0.59375D =2-1+2-4+2-5=0.10011B〈5〉125.125D =26+25+24+23+22+20+2-3=1111101.001B7. 将下列各数转换为十六进制数:〈1〉11010100B 〈2〉00111100B 〈3〉0.0001101B 〈4〉1110101.101111B 〈5〉783D 〈6〉5372D 〈7〉9570D 〈8〉9587D解:〈1〉11010100B=D4H〈2〉00111100B =3CH〈3〉0.0001101B =0.1AH〈4〉1110101.101111B=75.BCH〈5〉783D =30FH〈6〉5372D =14FCH〈7〉9570D =2562H〈8〉9587D =2573H8. 将下列十六进制数转换为二进制数:〈1〉2B7CH 〈2〉2EFDH 〈3〉1AB0H 〈4〉0.56F8H 〈5〉4DE.ACH解:〈1〉2B7CH =10 1011 0111 1100B〈2〉2EFDH =10 1110 1111 1101B〈3〉1AB0H = 1 1010 1011 0000B〈4〉0.56F8H =0.0101 0110 1111 1B〈5〉4DE.ACH =10011011110.101011B9. 将下列十六进制数转换为十进制数:〈1〉A8CH 〈2〉FFH 〈3〉1000H 〈4〉F001H 〈5〉FFFFH解:〈1〉A8CH =10*162 +8*16 +12 =2700D〈2〉FFH =15*16+15 =255D〈3〉1000H =163 =4096D〈4〉F001H=15*163 + 1 =61441D〈5〉FFFFH =15*163 +15*162+15*16 +15 =65535D12. 将下列十进制数分别用八位原码、反码和补码表示:〈1〉+15 〈2〉-15 〈3〉-64 〈4〉+117 〈5〉-6 〈6〉-120解:13. 求下列补码数的十进制值:〈1〉00110011 〈2〉10101011 〈3〉10000101 〈4〉00000101〈5〉11111011 〈6〉00000000 〈7〉11111111 〈8〉10000000解:〈1〉因为00110011是正数,所以补码和原码相等,对应的十进制数为25+24+21+20=32+16+2+1= +51D〈2〉对应原码为11010101,十进制数为-85D〈3〉对应原码为11111011,十进制数为-123D〈4〉原码与补码相同,十进制数为5D〈5〉因为11111011是负数,所以补码等于反码加1,对应的反码为1111010,对应的原码为1000101,所以其十进制数为– (22+21+20) =– 5D〈6〉十进制数为0D〈7〉对应原码为10000001,十进制数为-1D〈8〉十进制数为-128D15. 已知X,Y的值如下,求[X ]补,[Y ]补,[X+Y ]补,[X-Y ]补,并说明结果有无溢出,设补码都用八位表示,减法仍直接用减运算。

〈1〉X=45,Y=85 〈2〉X=45,Y=-85 〈3〉X=-45,Y=85 〈4〉X=-45,Y=-8516. 查ASCII代码表,将下列字符转换为8位ASCII代码,并用十六进制表示:〈1〉5 〈2〉A 〈3〉a 〈4〉= 〈5〉?〈6〉*解:查ASCII 代码表得:〈1〉‘5’= 35H = 00110101B〈2〉‘A’= 41H = 01000001B〈3〉‘a’= 61H = 01100001B〈4〉‘=’= 3DH = 00111101B〈5〉‘?’= 3FH = 00111111B〈6〉‘*’= 2AH = 00101010B17. 查ASCII代码表,将下列7位ASCII代码,转换为相应字符(假设最高位都为0):〈1〉0100001 〈2〉0111001 〈3〉1010111 〈4〉1100101 〈5〉1111011解:查ASCII 代码表得:〈1〉0100001 = 21H =‘!’〈2〉0111001 = 39H =‘9’〈3〉1010111 = 57H =‘W’〈4〉1100101 = 65H =‘e’〈5〉1111011 = 7BH =‘{’18. 写出下列存储器地址的段基址,偏移地址和物理地址:〈1〉2314H:0035H 〈2〉1FD0H:000AH 〈3〉60ADH:DDF6H解:物理地址:〈1〉23175H 〈2〉1FD0AH〈3〉该存储器地址的段基址为60ADH;偏移地址为DDF6H;物理地址为:60AD0H + DDF6H = 6E8C6H19. 某一存储单元的物理地址为12345H,试完成下列不同的逻辑地址表示:〈1〉1234H:H 〈2〉H:0345H解:〈1〉1234H :0005H 12345 – 12340 =5〈2〉1200H :0345H 12345 – 345 = 1200020. 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据变量V AL的偏移地址为0050H,试指出下列指令的源操作数是什么寻址方式?若是内存操作数则计算它的物理地址(用十六进制数表示)。

〈1〉MOV AX,0ABH 〈2〉MOV AX,BX 〈3〉MOV AX,[100H ]〈4〉MOV AX,[BP+10H ]〈5〉MOV AX,ES:[BX ]〈6〉MOV AX,[SI ]〈7〉MOV AX,[BP ] 〈8〉MOV AX,V AL [BP ] 〈9〉MOV AX,1100H [BX ] [SI ] 解:(1)立即寻址,没有物理地址(2)寄存器寻址,没有物理地址(3)直接寻址,物理地址=DS:100H=20100H(4)基址寻址,物理地址=SS:[BP+10H]=15020H(5)段超越的间址寻址,物理地址=ES:[BX]=21100H(6)间址寻址,物理地址=DS:[SI]=200A0H(7)间址寻址,物理地址=SS:[BP]=15010H(8)基址寻址,物理地址=SS:[BP+V AL]=15060H(9)基址加变址寻址,物理地址=DS:[SI+BX]=212A0H21. 假定有关寄存器及存储单元的内容如下:(DS)=2000H, (BX)=0100H,(SI)=0002H, (20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH, (21202H)=0B7H,(21203H)=65H,试指出下列各条指令执行完后AX寄存器的内容。

〈1〉MOV AX,1200H 〈2〉MOV AX,BX 〈3〉MOV AX,[1200H ]〈4〉MOV AX,[BX ] 〈5〉MOV AX,1100H [BX ] 〈6〉MOV AX,1100H [BX ] [SI ] 解:AX寄存器的内容是两个字节!(得到的物理地址是它的低字节地址,高字节地址加1。

)->事实上,一个字的地址就是其低字节的地址。

(1)(AX)=1200H (2)(AX)=100H (3)(AX)=4C2AH(4)(AX)=3412H (5)(AX)=4C2AH (6)(AX)=65B7H22. 指出下列指令的错误:〈1〉MOV AH,BX 〈2〉MOV [BX ],[SI ] 〈3〉MOV AX,[SI ] [DI ]〈4〉MOV CS,AX解:(1)错误:数据类型不一致,AH为8位,BX为16位。

(2)错误:源操作数和目标操作数不能同为内存操作数。

(3)错误:不能用两个变址寄存器。

(4)错误:不能给CS赋值。

23. 用几条指令完成下列功能:〈1〉把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

〈2〉用寄存器BX和SI的基址变址寻址方式,把存储器中的一个字节与AL寄存器的内容相加,结果存入AL寄存器中。

〈3〉用寄存器BX和位移量0B2H的基址寻址方式,把存储器中的一个字与(CX)相加,结果送回存储单元中。

〈4〉用位移量0524H的直接寻址方式,把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

〈5〉把数0B5H与(AL)相加,结果送回AL中。

解:(1)ADD DX, BX(2)ADD AL, BYTE PTR [BX] [SI](3)ADD WORD PTR 0B2H [BX], CX(4)ADD WORD PTR [524H], 2A59H(5)ADD AL, 0B5H25. 设段寄存器(SS)=3A4BH,程序中要求堆栈长度为200个字节,试计算出堆栈指针SP的初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。

解:因为堆栈长度为200个字节,所以堆栈指针SP的初始值为SP=200 其初始值指向的物理地址为:3A4B0 H + 200 D= 3A4B0H + C8H = 3A578H27. 指出下列指令哪些是错误的,若有错误请说明错在何处?〈1〉CMP 15H,BX 〈2〉CMP [2000H ],25 〈3〉CMP [100H ],[200H ]〈4〉CMP AX,[3050H ]解:(1)错误:目标操作数不能为立即数。

(2)错误:应指明内存操作数的类型(3)错误:不能目标和源同为内存操作数(4)若原来已定义内存操作数为字类型,则没错。

最好显式写出:CMP AX, WORD PTR [3050H]28. 求62A0H分别与下列各数相加的结果,并根据结果设置标志位SF,ZF和OF的值。

〈1〉1234H 〈2〉4321H 〈3〉CFA0H 〈4〉9D60H解:(1)62A0H+1234H = 74D4H SF=0,ZF =0, OF=0(2)62A0H+4321H = A5C1H SF=1,ZF =0, OF=1(3)62A0H+CFA0H =3240H SF=0,ZF =0, OF=0(4)62A0H+9D60H = 0000H SF=0,ZF =1, OF=030. 用两条移位及循环移位指令,将AL中的各位按相反的顺序排列到AH中。