汇编语言课后答案.docx
《汇编语言课后答案.docx》由会员分享,可在线阅读,更多相关《汇编语言课后答案.docx(27页珍藏版)》请在冰点文库上搜索。
汇编语言课后答案
汇编语言课后答案
第一章.习题
用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
(1)369
(2)10000(3)4095(4)32767
答:
(1)369=101110001B=171H
(2)10000=10011100010000B=2710H
(3)4095=111111111111B=FFFH
(4)32767=111111111111111B=7FFFH将下列二进制数转换为十六进制数和十进制数:
(1)101101
(2)10000000(3)1111111111111111(4)11111111
答:
(1)101101B=2DH=45
(2)10000000B=80H=128
(3)1111111111111111B=FFFFH=65535
(4)11111111B=FFH=255
将下列十六进制数转换为二进制数和十进制数:
(1)FA
(2)5B(3)FFFE(4)1234
答:
(1)FAH=11111010B=250
(2)5BH=1011011B=91
(3)FFFEH=1111111111111110B=65534
(4)1234H=1001000110100B=4660
完成下列十六进制数的运算,并转换为十进制数进行校核:
⑴3A+B7
(2)1234+AF(3)ABCD-FE⑷7ABX6F
答:
(1)3A+B7H=F1H=241
(2)1234+AFH=12E3H=4835
(3)ABCD-FEH=AACFH=43727
(4)7ABX6FH=35325H=217893
下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1)(-85)+76
(2)85+(-76)(3)85-76(4)85-(-76)(5)(-85)-76(6)
-85-(-76)
答:
(1)(-85)+76=10101011B+01001100B=11110111B=0F7H;CF=0;OF=0
(2)85+(-76)=01010101B+10110100B=00001001B=09H;CF=1;OF=0
(3)85-76=01010101B-01001100B=01010101B+10110100B=00001001B=09H;CF=0;OF=0
(4)85-(-76)=01010101B-10110100B=01010101B+01001100B=B=0A1H;CF=0;OF=1
(5)(-85)-76=10101011B-01001100B=10101011B+10110100B=01011111B=5FH;CF=0;OF=1
(6)-85-(-76)=10101011B-10110100B=10101011B+01001100B=B=0F7H;CF=0;OF=0
下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?
(1)D8
(2)FF
答:
⑴D8H表示的带符号数为-40,D8H表示的无符号数为216;
(2)FFH表示的带符号数为-1,FFH表示的无符号数为255。
下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?
(1)4F
(2)2B(3)73(4)59
答:
⑴4FH表示的十进制数为79,4FH表示的字符为0;
⑵2BH表示的十进制数为43,2BH表示的字符为+;
⑶73H表示的十进制数为115,73H表示的字符为s;
⑷59H表示的十进制数为89,59H表示的字符为丫。
请写出下列字符串的ASCII码值。
Forexample,
Thisisanumber3692.
答:
46H6FH72H20H65H78H61H6DH70H6CH65H2CH0AH0DH
54H68H69H73H20H69H73H20H61H20H6EH75H6DH62H65H72H20H33H36H39H32H2EH0AH0DH
第二章.习题
在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存
器提供的,但有时也可以在指令中直接指定00~FFH的端口号。
试问可直接由指
令指定的I/O端口数。
答:
可直接由指令指定的I/O端口数为256个。
有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和
000B3H单元中,请用图表示出它们在存储器里的存放情况。
答:
存储器里的存放情况如右上图所示。
在IBMPC机的存储器中存放信息如右下图所示。
试读出30022H和30024H
字节单元的内容,以及30021H和30022H字单元的内容。
答:
30022H字节单元的内容为ABH30024H字节单元的内容为EFH30021H字单元的内容为AB34H30022H字单元的内容为CDABH
在实模式下,段地址和偏移地址为3017:
000A的存储单元的物理地址是什么?
如果段地址和偏移地址是3015:
002A和3010:
007A呢?
答:
3017:
000A、3015:
002A和3010:
007A的存储单元的物理地址都是3017AH
如果在一个程序开始执行以前(CS)=0A7F0H(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,试问该程序的第一个字的物理地址是多少?
答:
该程序的第一个字的物理地址是0AAA40H。
在实模式下,存储器中每一段最多可有10000H个字节。
如果用调试程序DEBU(的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OFSF、ZF、CF的值。
C>debug
-r
AX=0000BX=0000CX=0079DX=0000SP=FFEEBP=0000
SI=0000DI=0000DS=10E4ES=10F4SS=21F0CS=31FF
IP=0100NVUPDIPLNZNAPONC
答:
此时存储器分段的示意图如右图所示。
OFSF、ZF、CF的值都为0。
下列操作可使用那些寄存器?
(1)加法和减法数据寄存器等
(2)循环计数CX
(3)乘法和除法AXDX乘数和除数用其他寄存器或存储器
(4)保存段地址段寄存器
(5)表示运算结果为0ZF=1
(6)将要执行的指令地址CS:
IP
(7)将要从堆栈取出数据的地址SS:
SP
答:
答案见题目的右边。
那些寄存器可以用来指示存储器地址?
答:
BXBPSI、DI、堆栈操作时的SP对应的段地址、386及其后继机型的Exx。
请将下列左边的项和右边的解释联系起来(把所选字母放在括号中):
(1)CPU(M)A.保存当前栈顶地址的寄存器。
(2)存储器(C)B.指示下一条要执行的指令的地址。
⑶堆栈(D)C.存储程序、数据等信息的记忆装置,微机有RAM和ROM两种。
(4)IP(B)D.以后进先出方式工作的存储空间。
(5)
SP(A)E.把汇编语言程序翻译成机器语言程序的系统程序。
起始地址的寄存器,8086/8088机有四个:
CS、DS、
SS、ES。
(11)机器语言(G)K.控制操作的标志,如DF位。
(12)汇编程序(E)L.记录指令操作结果的标志,共6位:
OFSF、ZF、AFPF、CF。
(13)连接程序(I)M.分析、控制并执行指令的部件,由算术逻辑部件ALU和
寄存器等
组成。
(14)指令(O)N.由汇编程序在汇编过程中执行的指令。
(15)伪指令(N)O.告诉CPU要执行的操作(一般还要指出操作数地址),在程序运行时
执行。
答:
答案见题目的括号中
第三章.习题
给定(BX)=637DH(SI)=2A9BH,位移量D=7237H|试确定在以下各种寻址方式下的有效地址是什么?
(1)立即寻址
(2)直接寻址
(3)使用BX的寄存器寻址
(4)使用BX的简接寻址
(5)使用BX的寄存器相对寻址
(6)基址变址寻址
(7)相对基址变址寻址
答:
(1)操作数在指令中,即立即数;
(2)EA=D=7237H;
(3)无EA操作数为(BX)=637DH
(4)EA=(BX)=637DH;
(5)EA=(BX)+D=0D5B4H;
(6)EA=(BX)+(SI)=8E18H;
⑺EA=(BX)+(SI)+D=1004FH超过了段的边界,最高进位位丢失,因此EA=004FH
试根据以下要求写出相应的汇编语言指令
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
⑵用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器
的内容相加,并把结果送到AL寄存器中。
⑶用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和
(CX)相加,并把结果送回存储器中
⑷用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并
把结果送回存储单元中。
(5)把数0B5H与(AL)相加,并把结果送回AL中。
答:
(1)ADDDX,BX
(2)ADDAL,[BX][SI]
(3)ADD[BX+0B2H],CX
(4)ADDWORDPTR[0524H],2A59H
(5)ADDAL,0B5H
写出把首地址为BLOCK勺字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:
(1)寄存器间接寻址
(2)寄存器相对寻址
(3)基址变址寻址
答:
(1)MOVBX,OFFSETBLOCK
ADDBX,(6—1)*2
MOVDX,[BX]
(2)MOVBX,OFFSETBLOCK改为:
MOVBX,(6-1)*2
MOVDX,[BX+(6-1)*2]也可MOVDX,BLOCK[BX]
(3)MOVBX,OFFSETBLOCK
MOVSI,(6-1)*2
MOVDX,[BX][SI]
现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1)MOVAX,1200H
(2)MOVAX,BX
(3)MOVAX,[1200H]
(4)MOVAX,[BX]
(5)MOVAX,1100[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,1100[BX][SI]
答:
(1)(AX)=1200H
(2)(AX)=0100H
(3)(AX)=4C2AH
(4)(AX)=3412H
(5)(
AX)=4C2AH
(6)(AX)=7856H
(7)(AX)=65B7H
给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H(BX)=1200H,(DS)=212AH(224A0H)=0600H,(275B9H)=098AH试为以
下的转移指令找出转移的偏移地址。
(1)段内直接寻址
(2)使用BX及寄存器间接寻址方式的段内间接寻址
(3)使用BX及寄存器相对寻址方式的段内间接寻址
答:
(1)JMPNEARPTR5119H;(IP)=5119H+((IP)+03H)=7CDCH物理地址
PA=09CDCH
(IP)+03H是JMPNEARPTR5119指令的下一条指令的首地址。
(2)JMPWORDPTR[BX];(IP)=((DS)*10H+(BX))=0600H,PA=02600H
(3)JMPD[BX];(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH
设当前数据段寄存器的内容为1B00H在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。
答:
MOVBX,[2000H];图示如上所示。
MOVAX,[2000H+2]
MOVES,AX
MOVAX,ES:
[BX]
在0624H单元内有一条二字节JMPSHOROBJ指令,如其中位移量为
(1)27H,⑵6BH,(3)0C6H,试问转向地址OBJ的值是多少?
答:
(1)OBJ=0624H+02H+27H=064DH
(2)OBJ=0624H+02H+6BH=0691H
⑶OBJ=0624H+02H+0C6H=05ECH;C6HM应的负数为-3AH(向上转移,负位
移量)
假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?
其物理地址值是多少?
(1)
MOVAX,0ABH
(2)MOVAX,BX
(2)
答:
(1)立即方式;操作数在本条指令中
(3)寄存器寻址方式;操作数为(BX)=0100H
(4)直接寻址方式;PA=20100H
(5)直接寻址方式;PA=20050H
(6)BX寄存器间接寻址方式;PA=20100H
⑹附加段BX寄存器间接寻址方式;PA=21100H
(7)BP寄存器间接寻址方式;PA=15010H
(8)SI寄存器间接寻址方式;PA=200A0H
(9)BX寄存器相对寻址方式;PA=20110H
(10)BX寄存器相对寻址方式;PA=20150H
(11)BX和SI寄存器基址变址寻址方式;PA=201A0H
(12)BX和SI寄存器相对基址变址寻址方式;PA=201F0H
在ARRA澈组中依次存储了七个字数据,紧接着是名为ZERO勺字单元,表
示如下:
ARRAYDW23,36,2,100,32000,54,0
ZERODW?
⑴如果BX包含数组ARRAYS初始地址,请编写指令将数据0传送给ZERO单元。
⑵如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元。
答:
(1)MOVAX,[BX+(7-1)*2]
MOV[BX+(7)*2],AX
(2)MOVAX,ARRAY[BX]
MOVARRAY[BX+2],AX
如TABLE为数据段中0032单元的符号
名,其中存放的内容为1234H,试问以下两条指令有什么区别?
指令执行完后AX
寄存器的内容是什么?
MOVAX,TABLE
LEAAX,TABLE
答:
MOVAX,TABLE是将TABLE单元的内容送到AX,(AX)=1234H
LEAAX,TABLE是
将TABLE单元的有效地址送到AX,(AX)=0032H
执行下列指令后AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032H
ENTRYDW3
I
I
I
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
答:
(AX)=1E00H(TABLE的存储方式如右图所示)
下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING勺字节单元中:
CSTRINGDB‘BASEDADDRESSI'NG
请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。
答:
MOVDH,CSTRING
MOVDL,CSTRING+7-1
已知堆栈段寄存器SS的内容是0FFA0H堆栈指针寄存器SP的内容是00B0H先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP旨令。
试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
答:
堆栈区和SP的内容变化过程示意图如下左图所示。
设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。
请写出两条指令把字变量X装入AX寄存器。
答:
MOVBX,[2000H]
MOVAX,ES:
[BX]
求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)1234H
(2)4321H(3)CFA0H(4)9D60H
答:
(1)和为74D4H;SF=0,ZF=0,CF=0,OF=0
(2)和为A5C1H;SF=1,ZF=0,CF=0,OF=1
(3)和为3240H;SF=0,ZF=0,CF=1,OF=0
(4)和为0000H;SF=0,ZF=1,CF=1,OF=0
求出以下各十六进制数与十六进制数4AE0H勺差值,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)1234H
(2)5D90H(3)9090H(4)EA04H
答:
(1)差为C754H;SF=1,ZF=0,CF=1,OF=0
(2)差为12B0H;SF=0,ZF=0,CF=0,OF=0
(3)差为45B0H;SF=0,ZF=0,CF=0,OF=1
(4)差为9F24H;SF=1,ZF=0,CF=0,OF=0
写出执行以下计算的指令序列,其中X、丫、Z、R、W均为存放16位带符号数单元的地址。
⑴ZJW+(Z-X)
(2)ZJW-(X+6)-(R+9)
⑶ZJ(W*X)/(Y+6),RJ余数⑷ZJ((W-X)/5*Y)*2
答:
(1)MOVAX,Z;以下程序都未考虑带符号数的溢出
SUBAX,X
ADDAX,W
MOVZ,AX
(2)MOVBX,X
ADDBX,6
MOVCX,R
ADDCR,9MOVAX,WSUBAX,BXSUBAX,CXMOVZ,AX(3)ADDY,6MOVAX,WIMULXIDIVYMOVZ,AXMOVR,DX
(4)MOVAX,WSUBAX,XCWDMOVBX,5IDIVBXIMULYSHLAX,1;((DX),(AX))*2RCLDX,1
已知程序段如下:
MOVX,1234H;(AX)=1234H,标志位不变
MOVCL,4;(AX)和标志位都不变
ROLAX,CL;(AX)=2341H,CF=1,SF和ZF不变
DECAX;(AX)=2340H,CF=1不变,SF=QZF=0
MOVCX,4;(AX)和标志位都不变
MULCX;(AX)=8D00H,CF=OF=,0其它标志无定义
I
NT20H
试问:
(1)每条指令执行完后,AX寄存器的内容是什么?
(2)每条指令执行完后,进位、符号和零标志的值是什么?
(3)程序结束时,AX和DX的内容是什么?
答:
(1)见注释;
(2)见注释;
(3)(AX)=8D00H,(DX)=0
下列
程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?
MOVAX,0;(AX)=0,标志位不变
DECAX;(AX)=0FFFFH,CF不变,SF=1,ZF=0,OF=0
ADDAX,7FFFH;(AX)=7FFEH,CF=1,SF=0,ZF=0,OF=0
ADDAX,2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1
NOTAX;(AX)=7FFFH,标志位不变
SUBAX,0FFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1
ADDAX,8000H;(AX)=0,CF=1,SF=0,ZF=1,OF=1
SUBAX,1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0
ANDAX,58D1H;(AX)=58D1H,CF=0,SF=0,ZF=0,OF=0
SALAX,1;(AX)=0B1A2H,CF=0,SF=1,ZF=0,OF=1
SARAX,1;(AX)=0D8D1H,CF=0,SF=1,ZF=0,OF=0
NEGAX;(AX)=272FH,CF=1,SF=0,ZF=0,OF=0
RORAX,1;(AX)=9397H,CF=1SF和ZF不变,0F=1
答:
见注释。
变量DATA)和变量DATAY勺定义如下:
DATAXDW0148H
DW2316H
DATAYDW0237H
DW4052H
请按下列要求写出指令序列:
⑴DATAX和DATAY两个字数据相加,和存放在DATAY中0
⑵DATAX和DATAY两个双字数据相加,和存放在从DATAYf始的双字单元中
(3)解释下列指令勺作用:
STC
MOVBX,DATAX
ADCBX,DATAY
⑷DATAX和DATAY两个字数据相乘(用MUL。
⑸DATAX和DATAY两个双字数据相乘(用MUL。
(7)DATAX除以23(用DIV)。
(8)DATAX双字除以字DATAY(用DIV)0
答:
(1)MOVAX,DATAX
ADDDATAY,AX
MOVAX,DATAX+2
ADDDATAY+2,AX
(2)MOVAX,DATAX
ADDDATAY,AX
MOVAX,DATAX+2
ADCDATAY+2,AX
MOVDATAY+4,0;用于存放进位位
ADCDATAY+4,0
(3)DATAX和DATAY两个字数据之和加1,结果存入BX寄存器
(4)RESULT1DW0
DW0
RESULT2DW0
DW0
I
I
I
MOVAX,DATAX
MULDATAY
MOVRESULT1,AX
MOVRESULT1+2,DX
MOVAX,DATAX+2
MULDATAY+2
MOVRESULT2,AX
MOVRESULT2+2,DX
(5)AADW0
BBDW0
CCDW0
DDDW0
MOVAX,DATAX
MULDATAY
MOVAA,AX
MOVBB,DX