![汇编语言课后答案_第1页](http://file4.renrendoc.com/view3/M00/3D/04/wKhkFmYy702AQHiiAAF68ySI1M8869.jpg)
![汇编语言课后答案_第2页](http://file4.renrendoc.com/view3/M00/3D/04/wKhkFmYy702AQHiiAAF68ySI1M88692.jpg)
![汇编语言课后答案_第3页](http://file4.renrendoc.com/view3/M00/3D/04/wKhkFmYy702AQHiiAAF68ySI1M88693.jpg)
![汇编语言课后答案_第4页](http://file4.renrendoc.com/view3/M00/3D/04/wKhkFmYy702AQHiiAAF68ySI1M88694.jpg)
![汇编语言课后答案_第5页](http://file4.renrendoc.com/view3/M00/3D/04/wKhkFmYy702AQHiiAAF68ySI1M88695.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一或
11(如果十六进制效的最高位是字母(妣XB).剜应在箕前制加0(零).如本墨(3))
(1)569D-101110001B-171H
(2)1000CD-1001110001000CB-2"10H
(3)4O95D-111111111111B-CFFFH
(4)52767D-1111111Hll1111B-TTFH
12
(1)101101B-Z)H-45D
(2)100000CXB-9CH-E8D
(3)11111111nil1111B-CHTFHM65535D
(4>11111111B-0FFH-255D
13
(1)CF.AH-11111O1CB-25OD
(2)31^1011011B-91D
(3)CFFFEH-111111111111m(E=65539
(4)12MH-1001000110100B-466CD
14
(D3AHYB计0F1H
(2)1234H-0.4FH-12E3H
(3)OABCEH-CFET^OAACFH
(5)7ABX6FH-35325H
15
(1)(-85D-:6I>10101011B-010011(XB-11110111B-CF-H
(2)85D-(-%DA01010101B-10110100B-00001001B-09H
(3)85D-761Aoi010101B-1011OMMB-OOOO1001B»09H
(4)85D-(--6D>01010101B-0100110CB-10100001B-0A1H
(5)(-85D)-^6D-1010101CB-10110100B«01011111B-5FH
(6)-85I>-(^6D>«10101011B-01001100B=llll011IB-0FTI
16
(1)CD8H
之果E校萼作臂三号政,则它表示一401>之其它衩舂任天号号数.Mt216D.
(2)CFFH
之果E被詈住普与号致.别它表示一1D:力果它衩着作无左号数.则它255D.
1.7
(1)-ffH.皿O'
(2)2BH,43D,
(3)硝115D,
(4)59H89D,'f
1.8
(1)For«a«ple,
46H6FH^H2CH65H^SH61H6DH'CH6cH65H2cH
(2)Ihuaaitrbir3692.
54H68H69H73H20H69H73H2cH61H20H6EH_5H6EH62H65H二H20H33H36H
39H32H2EH
第二B
2.1
256个
22
E5HOOOBOH
1EH000B1H
OOOB2H
3cHOOOB3H
2AH000B4H
3CO22H旬30024H字节单元的内容分制为
C30022H?=CABH
C30024H?=CEFH
3OQ21H和30022H字单元的力容分制为
C30021H)=CAB34H
30022H?=0CD.4BH
逻辑拄址为3017:0O0A的存惚单元的打理地址为3017AH.
逻行运址为3015002A的¥惚单元的把建基址为3017AH.
逻篁叁址为30】。如1A的考情军元的物理姓址为3017AH.
0AAA4CH
2.6
10EWH::*BU叁:
10F40H
2OE40H:“KklC〉
20F40H
21F00H(54K3)
31F00H
31FF0H(*K代三)
41FF0H
OF=0:SF=O:ZF=O:CF=C
AX,BX,CX,DX,SLDI
CX
(3)^BXCXDXSLDI
(4)CS:DS:SS:ES
(5)FLAGS
(6)cs;n>
(7)SS:SPBP
2.S
指示寿堵赛地址的寄存葵之下所示
S-;假参
CSIP
SSSRBP
DSBXDLSI
ESDI
2.9
1<M)2(C)3.(D)4.®)5(A)64L)?<K)84J)
9XF)10(H)11(G)12®13.(D1440)15.(N)
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美
明,温冬蝉著)
第3章答案
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美
明,温冬蝉著)第三章答案1-
lo
・立•
1)即址
没有
(2)直接寻址
7237H
(3)使用BX的寄存器寻址没
有
(4)使用BX的间接寻址
637DH
(5)使用BX的寄存器相对寻址
0D5F0H
(6)基址变址寻址
8E18H
(7)相对基址变址
004FH
2O根据下列要求,写出相应的汇编指令。
(1)ADDDX,BX
(2)ADDAL,fBX][SI]
(3)ADDrBX][0B2H],CX
(4)MOVAX,2A59HADD[0524H],AX
(5)ADDAL,0B5H
3o
(1)寄存器间接寻址
MOVBX,OFFSET[BLOCK][OAH]
MOVDX,[BX]
(2)寄存器相对寻址
MOVSI,OAH
MOVDX,[BLOCK][SI]
⑶基址变址寻址
MOVBX,BLOCK
MOVSI,OAH
MOVDX,[BX][SI]
没人来看,还是要写〜〜
4。现有(DS)
=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)
=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下歹U各条指
令执行完后,AX寄存器的内容。
(1)MOVAXJ200H
1200H
(2)MOVAX,BX
01OOH
(3)MOVAX,[1200]
4C2AH注意,是字单元!!
(4)MOVAXJBX]
3412H同上
(5)MOV1100[BX]
4C2AH
(6)MOVAX,[BX][SI]
7856H
(7)MOVAX,1100[BX][SI]
65B7H
5o
(1)7CD9H(2)1200H(3)6319H
6OMOVBX,2000H
LESDI,[BX]
MOVAX,ES:DI
7o转向地址OBJ的值分别为:(1)064DH(2)0691H(3)05E0H
注意有符号数的符号位一
8o(1)MOVAX,0ABH立即数寻址
无物理地址
(2)MOVAX,BX寄存器寻址
同上
(3)MOVAXJ100]直接寻址
201OOH
(4)MOVAX,VAL直接寻址
20050H
(5)MOVAX,[BX]寄存器间接寻址
201OOH
(6)MOVAX,ES:[BX]直接寻址
21100H
(7)MOVAX,[BP]寄存器间接寻址
2001OH
(8)MOVAX,[SI]同上
200A0H
(9)MOVAX,[BX+10]寄存器相对寻址
20110H
(10)MOVAX,VAL[BX]同上
20150H
(11)MOVAX,[BX][SI]基址变址寻址
201A0H
(12)MOVAX,VAL[BX][SI]相对基相变址寻址
201F0H
9o
(1)的指令:MOVAX,[BX][0CH]MOV
ZREO,AX
(2)的指令:MOVAX,ARRAY[BX]MOV
ZREO,AX
10oMOVAX,TABLE是把符号地址TABLE里的内容送到AX里,指
令执行完后,(AX)=1234H
LEAAX,TABLE是把符号地址TABLE的有效地址(这里是
偏移量)送到指定寄存器AX里,指
令执行完后,(AX)=0032H
llo执行完指令后,(AX)=1EOOH
12oLEAAX,CSTRING
MOVDL,AX
MOVDH,[AX+6]
13。这个,,图,很麻烦了,所以就不画了一大家可以看一下课本上P51-P53,
很清楚,看完了这道匙也会了〜〜〜
140LESBXJ2000]
MOVAX,ES:[BX]
注意:一开始我写的是:MOVAX,ES:[8000H],后来看到题目里要求写两
条指令,所以一条就不行了,就要画蛇添足〜〜〜
15运算结果
SF,ZF,CF,OF各位的值(从左至右依次往下〜)
(1)74D4H
0000
(2)A5C1H
1001
(3)4240H
0010
(4)0000H
0110
16o接上表〜
(1)5D14
0000
⑵A870
1001
(3)D870
1000
(4)34E4
0010
17o
(l).MOVAX,Z;把Z送到AX
SUBAX,X;Z-X
ADDAX,W;W+(Z-X)
MOVZ,AX;结果保存在z中
(2).MOVAX,R;R送到AX中
ADDAX,9;R+9
MOVBX,X;X送到BX中
ADDBX,6;X+6
ADDAX,BX;(R+9)+(X+6),结果保存在AX中
MOVBX,W;W送到BX中
SUBBX,AX;W-(R+9)-(X+6),连续减去两个数,相当于减去这两
个数的和〜〜
MOVZ,BX;最终结果送到Z中
(3)
MOVAX,W;把W送到AX
IMULX;W*X注意:低十六位保
存在AX里,高十六位保存在DX里
MOVBX,Y;把丫送到BX里
ADDBX,6;Y+6
IDIVBX;(W*X)/(Y+6)注意:商保存
在AX里,余数保存在DX里
MOVZ,AX;把商送到Z中,
MOVR,DX;把余数送到R中
(4)
MOVAX,W;把W送到AX中
SUBAX,X;w-x
CWD;把AX中的十六位带符号数扩展成为32
位,低十六位保存在AX中,高十六位保
;在口*中
MOVBX,5;把5送到BX中
IDIVBX;(W-X)/5被除数为32位,除
数为16位商为16位
IMULY;上一步结果再乖以Y,积为32位
MOVBX,2;把2送到BX中
IMULBX;上•步乘法所得的积再乘以2,各
为64位
MOVZ,EAX;把结果中低32位放入Z双字单元中
MOV[Z+4],EDX;把结果中高32位放入Z+4双字单元中
18o
指令本条指令执行完后AX的内容
执行完后CF,SF,ZF的值
MOVAX,1234H1234H
000
MOVCL,41234H
000
ROLAX,CL2341H
100
DECAX2340H
100
MOVCX,42340H
100
MULex8918H
000
INT20H
程序结束后,(AX)=8918H(DX)=OOOOH
19o
指令执行完后AX的内容
执行完后CF,SF,ZF和OF的值
MOVAX,00
0010
DECAXFFFFH
0100
ADDAX,7FFFH7FFEH
0000
ADDAX,28000H
0101
NOTAX7FFFH
0101
SUBAX,0FFFFH8000H
1101
ADDAX,8000H0000H
1011
SUBAX,1FFFFH
1101
ANDAX,58D1H58D1H
0000
SALAX,1B1A2H
0101
SARAX,1D8D1H
0100
NEGAX272FH
1000
RORAX,19397H
1001
20o
(1)MOVAX,DATAX
ADDDATAY,AX
(2)MOVAX,DATAX
ADDDATAY,AX
MOVAX,[DATAX+2]
ADD[DATAY+2],AX
(3)本书且指令的作用是:BX<一一[DATAX]+[DATAY]+[1](CF的值)
位加法〜
(4)MOVAX,DATAX
MULDATAY;结果的高十六位保存在DX裹,低
十六位保存在AX«
(5)MOVAX,DATAX
MOVDX,[DATAX+2]
MULDWORDDATAY;结果的高三十二位保存在EDX裹,
低三十二位保存在EAX«
;造凄所用的
DWORD•^一属性操作符,在第四章曾■阜到〜〜
(6)MOVAX,DATAX
DIV17H;结果商保存在AL中,
余数在AH中
(7)MOVAX,DATAX
CDW
DIVDATAY
21oNEGDX
NEGAX
SBBDX,0
22o
MOVAX,A;把曼字房数的低字放到AX中
MOVDX,[A+2];把曼字•良数的高字放到DX中
TESTDX,8000H;冽信式曼字房数的符号虎
JZRIGHT;如果是非负一,即直接保存
NEGDX;如果是负矍攵,即求衲
NEGAX
SBBDX,0
RIGHT:MOVB,AX
MOV[B+2],DX
23o每脩指令罩褐轨行完彳爰的结果依次卷:
(1)9AH(2)61H(3)0FBH(4)1CH(5)0(6)0E3H
24o轨行指令序列彳爰,BX的内容卷:0DAH
25o
(1)把53D乘以2的程序:
MOVAX,35H;53D=35H
SHLAX,1
(2)把53除以2的程序:
MOVAX,35H
SHRAX,1
其他的同理一
26o道段程序完成的功能是:把DX:AX中的曼字数獴左移4位(相常於乘以
16D)
27o各修指令覃褐轨行彳爰,DX的值依次卷:
(1)5CH(2)17H(3)05C8H(4)72H(5)2017H(6)0CDH(7)
0172H(8)05CCH
(9)0DCH
28o言亥程序段孰行完彳爰,BX寄存器的内容是:C02DH
29o(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:
LEASLCONAME;把CONAME中第一个字节的偏移地址送到SI中
LEADLPRLINE;把PRLINE中第一个字节的偏移地址送到DI
中
MOVCX,20;把重复次数放到ex里
CLD;让SIDI从低地址指向高地址(即从左到
右传送)
REPMOVSB;传送
(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:
LEASI,CONAME
LEADLPRLINE
MOVCX,20
STD;和上面唯一不同的就是这次是从右到
左,所以要从高地址批向低地址
REPMOVSB
(3)把CONAME中的第三和第四他|字WT装入AX的程序^说:
LEASI,[CONAME+3]
LODSW
(4)把AX寄存器的内容存入彳他PRLINE+5I鼎始的字前中的程序
LEADI,[PRLINE+5]
STOSW
(5)检查CONAME字符串中有趣空格字符,如有把它俾送幺合BH寄存器的程
序土拈
LEAD!,CONAME;把CONAME中第一•他字符偏移地
址放入DI中
MOVCX,20;把重^次数放到CX中
MOVAL,20H;把空格符的ASCII值放入AL
中
CLD;彳走低到高
REPNESCASB;比敕
MOVBH,[DI-1]R;把检查到的空格符送到BH中
30o
MOVCX,12H;把重禊次矍攵放到CX中。it裹
用十六诞制表示
MOVSL0;初始化SI
MOVAX,26H;把&字符的ASCII值放入AX
CHECK:CMPAX,STRINGfSI];依次查找
INCSI
LOOPNECHECK;找到了就退出
MOVAX,20H;把空格符的ASCH值勤放
入AX中
MOVSTRING[SI-1],AX;用空格符代替&
31o(1)用空格符清除PRINTLINE域的程序实现:
MOVAL,20H
LEADI,PRINT_LINE
MOVCX,132
CLD
REPSTOSB
(2)在STUDENT_ADDR中查找第一个‘_'的程序实现:
MOVAX,2DH;把“一”的
ASCII值放入AX
MOVSL0;初始化
SI
MOVCX,9;把重禊次
数放入ex中
;依次检查STUDENT-ADDR中的字符是否卷找到第一个停下来
CHECK:CMPAX,STUDENT_ADDR[SI];
INCSI
LOOPNZCHECK
(3)在STUDENT_ADDR中查找最后一个”—“的程序实现:
;和第二题不同的就是道次是彳他右到左查前,所以SI的初始化卷9
MOVAX,2DH
MOVSI,9
MOVCX,9
CHECK:CMPAX,STUDENT_ADDR[SI]
DECSI
LOOPNZCHECK
(4)程序
MOVAL,20H;把空格符的ASCII值放入AL
中
LEADI,STUDENT_NAME;把STUDENT_NAME中第一个字符偏
移地址放到DI中
MOVCX,30;把重复次数放到CX中
CLD:让DI从低位移到高位
REPZSCASB;如果有不是空格符的,就退出
JZSTORE:如果全是空格符,就转到
STORE中
;用*代替空格
STORE:MOVAL2AH
MOVCX,30
STD;注意,这里是把前面从低到高移动
的DI再从高到低移上去~~
REPSTOSB
⑸程序实现:
;把STUDENT_NAME移到PRINTJJNE的前30个字节中
LEASLSTUDENT_NAME
LEADLPRINT_LINE
MOVCX,30
CLD
REPMOVSB
;把STUDENT_ADDR移至PRINT_LINE的后9个字节中
LEASI,[STUDENT.ADDR+9]
LEADL[PRINT_LINE+132]
MOVCX,9
STD
REPMOVSB
32o程序实现:
ooo
LEASLOLDS
LEADLNEWS
MOVCX,5
REPZCMPSB
JNZNEW_LESS
ooo
33o
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPCX,0
JZZERO
(4)CMPBX,AX
JOOVERFLOW
(5)CMPBX,AX
JLEEQ_SMA
(6)CMPDX,CX
JBEEQ_CX
34o(1)跳转到:LI
(2)跳转到LI
(3)跳转到L2
(4)跳转到L5
(5)跳转到L5
35o
(1)可以引起转移到LI的指令有:NB,BE,NL,LE
(2)可以引起转移到L1的指令有:同上
(3)可以引起转移到L1的指令有:B,BE,L,LE
(4)可以引起转移到L1的指令有:NB,NBE,NL,NLE
(5)可以引起转移到L1的指令有:同上
(6)可以引起转移到L1的指令有:同(3)
(7)可以引起转移到L1的指令有:同上
36o
370程序流程图就不画了,呵呵,程序如下~~
MOVAL,STAUS[SI];把要测试的字节放到AL中
ANDAL,2AH;把第一,三,五位为一其他位为0
的数-2AH,与这个字节比较,结果
;放到AL中
JZROUTINE_4;如果结果为0,则三位都为0
XORAL,2AH;前面相与的结果再与2AH异或
JZROUTINE_1;如果结果为0,则三位都为1
BSFBL,AL
BSRBL,AL
CMPBL,CL
;如果向前和向后测试后,第一个1的位置相同,说明只有…个1,则异或运算
前有AL中有两个1
JEROUTINE2
ROUTINE.1
注:本题还有其他解法,请大家自己试试〜〜
38o(1)当括号内是:LOOP时,循环四次,程序结束后
(AX)=05(BX)=16(CX)=0(DX)=0
(2)当括号内是:LOOPE时,不循环,程序结束后
(AX)=02(BX)=04(CX)=03(DX)=02
(3)当括号内是:LOOPNE时:循环三次,程序结束后
(AX)=04(BX)=11(CX)=01(DX)=0
类别:ibm-pc汇编语言程序设计(第二版)课后习题答案I评论(7)I浏览(5855)
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美
明,温冬蝉著)第三章答案39—522006-11-0223:02
39o图,就不画了,呵呵〜〜自己看一下课本,P101—
40.o(1)00003100H(2)5100H(3)7100H
41o(1)目的地址:2004H内容依次为:56HF4H23H98H
(2)目的地址:384CH内容依次为:91H34HF2H01H
(3)目的地址:寄存器,无物理地址〜内容依次为:92H6DH
A2H4CH
42o(1)PUSHAX
(SP)<——(SP)-2
(SP+1)<-一一(AH)(SP)<——(AL)
(2)POPESI
(ESI)<------((ESP)+3,(ESP)+2,(ESP)+1,(ESP))
(ESP)<------(ESP)+4
(3)PUSH[BX]
(SP)<——(SP)-2
(SP+1)<-一一([BX+1])(SP)<——([BX])
(4)PUSHAD
(ESP)<------(EAX)
(ESP-4)<-------(ECX)
(ESP-8)<-------(EDX)
(ESP-12)<-------(EBX)
(ESP-16)<——(ESP);这里指的是指令执行前的ESP
(ESP-20)<-------(EBP)
(ESP-24)<-------(ESI)
(ESP-28)<-------(EDI)
(ESP)<-------(ESP)-32
(5)POPDS
(DS)<-―一((SP)+1,(SP))
(SP)<——(SP)+2
(6)PUSH4
(SP)<------(SP)-2
(SP+1)<-——0
(SP)<——4
43。(1)2CEFF93H(2)24B76A0H
(3)9090804H(4)6F13ADH
44o(1)OFFFFFFFCH(2)OFFFFFFF8H
(3)00000007H(4)00000099H
45o(EAX)=0(EBX)=25d
46o(AX)=3d(DX)=7d
47oADDECX,EDX
ADDECX,ESI
MOVEDI,ECX
48oIMULBX,DX,100H执行的操作是:
(BX)<------(DX)*100H
49o程序实现:
MOVAL,BL
CBW
IDIVCL
IMUL2
MOVDX,AX
50o
JMPDI是直接跳转,执行的操作是:(IP)<--(IP)+(DI)
JMP[DI]是间接跳转,执行的操作是:(IP)<——(IP)+([DI])跳转到DI中所
指向的内存单元中的指令地址〜
51o假设数组名为NUMBERS,程序如下〜
MOVBX,0;后面用到〜
MOVCX,100H;把循环次数放入CX
MOVAL,42H
MOVSL0;初始化SI
;CHECK用来实现查找功能〜
CHECK:CMPAL,NUMBERS[SI]
INCSI
JBSTORE1;大于42H的数的个数存入UP
JASTORE2;小于42H的的数的个数存入DOWN中〜
LOOPCHECK;相等继续循环〜
STORE1INCBL;找到一个大于42的数,BL值增加1〜
MOVUP,BL
LOOPCHECK
STORE2INCBH
MOVDOWN,BH
LOOPCHECK
52o图,也不用画了一呵呵〜好了,本章结束
第4章答案
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美
明,温冬蝉著)第四章答案2006-11-0421:591。指令下列指令的错误
(1)MOVAH,BX源操作数与目的操作数长度不相同〜
(2)MOV[BX],[SI]这是两个内存单元在传递数据,而这在汇编语言中
是不允许的---
⑶MOVAX,fSI][DI]不能用两个变址连用,其中一个应为基址〜
(4)MOVMYDAT[BX][SI],ES:AX同(2)
(5)MOVBYTEPTR[BX],1000必须有一个为寄存器
(6)MOVBX,OFFSETMYDAT[SI]OFFSET不能与复杂操作数相连〜
(7)MOVCS,AX不能对CS赋值〜
(8)MOVECX,AX操作数类型不同〜
2o(1)合法(2)非法(3)非法(4)非法
3。(1)非法,操作数类型不同
(2)合法
(3)非法,不允许两个内存单元直接传递数据,你把人家CPU放哪了?
|lnj
(4)合法〜
(5)合法〜
(6)合法
(7)非法〜,必须有一个寄存器一把CPU放哪了?〜〜
(8)非法,两个内存单元地址相加没有意义〜
(9)合法
(10)非法,同(3)
4。(1)两内存单元传递数据
(2)操作数类型不同
(3)跳转指令只能跳转到符号地址
(4)转移指令后不能为变量,只能为标号
(5)格式不对,应为NEARPTR…
5o图,就不画了〜〜
6O(1)DW5150H
(2)MOVAX,5150H
MOVADDRESS,AX
等,写出几个就可以〜〜
7ODATASGSEGMENT
FLD1BDB'personalcomputer'
FLD2BDB10DUP(32)
FLD3BDB20H
FLD4BDB01011001B
FLD5BDB,32654,
FLD6BDB10DUP(0)
FLD7BDBPART1',DUP20(?),'PART2',DUP50(?);PART3',DUP14⑺
FLD1WDWOFFFOH
FLD2WDW01011001B
FLD3WDWFLD7B
FLD4WDW5,6,7,8,9
FLD5WDW5DUP(0)
FLD6WDW(FLD6W-FLD1W)-(FLD7B-FLD1B)
8OPLENTH的值为22,GE表示该数据段的长度〜
9oL的值为7
10o(1)MOVAX,OFFSETLNAME
(2)MOVSI,WORDPTRCODE_LIST
(3)CODE_LENGHTEQU$-CODE_LIST
Ho代码如下:
DATA_SEGSEGMENT
DB5
DATA_LISTDW0FFFFH,0,2,5,4,5DUP(?)
DATA_SEGENDS
CODE_SEGSEGMENT
ASSUMECS:CODE_SEG,DS:DATA_SEG
MOVAX,5
MOVMAX,AX
MOVAX,0FFFFH
MOVMIN,AX
CODE_SEGENDS
12o(1)10025
(2)19
(3)2548
(4)3
(5)103
(6)OFFFFH
(7)1
(8)3
13o分别汇编成为:
MOVAX,OAH
MOVBL,OAH
MOVCL,1
14o(1)(AX)=1(2)(AX)=2(3)(CX)=14H(4)(DX)=32H
(5)(CX)=1]
15o(1)操作符错误改为:DATA_SEGSEGMENT
⑵缺少段名在前面加个段名
(3)引用应该从;开始把那个“/”改成“;”
(4)结构混乱改为:
MAIN_PROCPROCFAR
MAIN_PROCENDP
END
16o程序框架如下:
DATA_SEGSEGMENT;定羲数撼段
ORG0E000H;ai下一字
fi地址卷0E000H
FIRST_TYPEEQUTHISWORD;建立一他舆下一存储罩元有相同
段地址和偏移地址的操作数
DATA_GROUPDB100DUP(?);品合DATA_GROUP分配100
他I字箭的空^
DATA_SEGENDS;数獴段结束
STACK_SEGSEGMENT;定羲堆梭段
ALIGN16;下
一字^彳俭小段首地址^始
STACKDB100DUP(?);卷堆慢分配空IW
STACK_SEGENDS
CODE_SEGSEGMENT
ASSUMECS:CODE_SEG,DS:DATA_SEG,SS:STACK__SEG
ORG1000H;下
僚指令的第一他1字筋淡1000H1荆始
START:MOVAX,DATA_SEG
MOVDS,AX
MOVAX,STACK_SEG
MOVSS,AX
CODE_SEGENDS
ENDSTART;幺吉束〜
17o程序如下:
D_SEGSEGMENT;数据段定义
AUGENDDD99251
D_SEGENDS
E_SEGSEGMENT;附加段定义
ADDENDDD-15926
E_SEGENDS
C_SEGSEGMENT;代码段定义
ASSUMECS:C_SEG,DS:D_SEG,ES:E_SEG
START:MOVAX,D_SEG
MOVDS,AX
MOVAX,E_SEG
MOVES,AX
MOVEAX,DS:AUGEND
ADDEAX,ES:ADDEND
MOVDS:SUM,EAX
C_SEGENDS
ENDSTART;结束
18o
19o需要加上PTR伪操作的有:(2)(3)(4)
第5章答案
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美
明,温冬蝉著)第五章答案
这当然不是标准答案,希望对大家有用处。
5.1试编写•个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来
.modelsmall
.stack100H
.code
mainprocfar
Start:
pushdx
movax,0
pushax
movah,01H
int21H
cmpal,61H
jllopl
cmpal,7BH
jgelopl
subal,20H
movdl,al
lopl:movah,2
int21H
ret
Endstart
5.2编写一个程序,从键盘接受一个小写字母,然后找出它的前导字符和后续字
符,再按顺序显示这三个字符.
.modelsmall
.386
.code
MAINPROCFAR
start:
pushds
subax,ax
pushax
input:
movah,7H
int21H
cmpe:
cmpal,20H
JEexit
cmpal,61H
JLinput
cmpal,7AH
JGinput
print:
subal,01H
movdl,al
movah,02H
int21H
addal,01H
movdl,al
movah,02H
int21H
addal,01H
movdl,al
movah,02H
int21H
;输出换行回车
movdl,OAH
movah,02H
int21H
jmpinput
exit:
ret
MAINENDP
ENDstart
5.3将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在
AL、BL、CL、DL中。
.modelsmall
.data
xDB4dup(?)
.stack100H
.code
MAINPROCFAR
start:
pushds
andax,OOH
pushax
movax,1234H
movcx,04H
movsi,OOH
lop:
pushex
movcl,04H
rolax,cl
pushax
andal,0FH
movBYTEPTRx[si],al
popax
popex
addsi,2
Looplop
moval,[X]
movblJX+21
movcl,[X+4]
movdl,[X+6]
print:
movah,02H
int21H
movdl,al
movah,02H
int21H
movdl,bl
movah,02H
int21H
movdl,cl
movah,02H
int21H
exit:
ret
MAINENDP
ENDstart
5.4编写一个程序,要求比较两个字符串STRING1和STRING2所含字符是否相
同,若相同则显示"MATCH",若不同在显示:"NOMATCH"。
.modelsmall
.data
STRING1DB'Imuststudyhard'
STRING2DB'Imuststudyhard'
XDB'MATCH.$'
YDBNOMATCH.$'
.stack100H
.code
mainprocfar
Start:
pushdx
movax,0
pushax
movax,@data
movds,ax
moves,ax
leasi,STRING1
leadi,STRING2
cld
movcx,(string2-stringl)/typeSTRING2
ret
Endstart
5.5编写••个程序,要求能从键盘接收一个个位数N,然后响铃N次,(响铃的
ASCII为07)。
这题比较有意思,呵呵。
modelsmall
.code
mainprocfar
start:
pushds
subax,ax
pushax
input:
movah,01H
int21H
cmpal,20H
jeexit
cmpal,30H
jleinput
cmpal,3AH
jgeinput
subal,30H
movex,ax
andcx,OFFH
lop:
movdl,07H
movah,2H
int21H
looplop
jmpinput
exit:
ret
mainendp
endstart
5.6编写程序,将一个包含有20个数据的数组M分成两个数组:正数数组和负
数数组N,并分别把这两个数组中的数据个数显示出来。
.modelsmall
.386
.data
MDB1,2,3,4,5,6,7,8,9,10,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10
PDB20dup(?)
NDB20dup(?)
.code
MAINPROCFAR
start:
PUSHds
ANDax,0
PUSHax
MOVax,@data
movds,ax
MOVbx,0
MOVsi,0
MOVdi,0
MOVcx,20D
cmpe:
CMPM[bx],0
JLifLow
hight:
MOVal,byteptrM[bx]
MOVbyteptrP[si],al
incsi
JMPcommonContrl
ifLow:
MOVal,byteptrM[bx]
MOVbyteptrN[di],al
INCdi
commonContrl:
INCbx
loopcmpe
movax,si
callshowNumber
callprintCR
movax,di
callshowNumber
exit:ret
MAINENDP
;;;;;;;;;;;;;;;;;注意,ShowNumber这个子过程有问题,请自行修改
showNumberPROCNEAR
covernum:
DAA
MOVdx,ax
MOVcl,2H
show:
ROLdl,4H
pushdx
ANDdl,OfH
ADDdl,30H
MOVah,02H
int21H
popdx
loopshow
ret
showNumberENDP
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
printCRPROCNEAR
movdl,0aH
movah,02H
int21H
movdl,0dH
movah,02H
int21H
ret
printCRENDP
endstart
5.7编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,
并把它放在AX中。
此题根据题意要求应该使用完整汇编格式,因为精简格式也使用DATA....
dataaresegment
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代办公模式下的软件盗版防范策略研究
- 国庆节活动团购活动方案
- 生态旅游规划的核心策略案例研究报告
- Unit 2 My family(Period 4)(说课稿)-2024-2025学年人教大同版(2024)英语三年级上册
- 12 盘古开天地 (说课稿)-2024-2025学年统编版语文四年级上册
- 21三黑和土地 (说课稿)-2024-2025学年六年级上册语文统编版
- 14文言文二则《两小儿辩日》(说课稿)-2023-2024学年统编版语文六年级下册
- 2024年五年级数学上册 5 简易方程第16课时 实际问题与方程(5)配套说课稿 新人教版
- 2024-2025学年高中物理 第10章 热力学定律 4 热力学第二定律说课稿1 新人教版选修3-3
- 2025道路绿化养护委托合同
- 东南大学宣讲介绍
- 教师的解放与超越
- 2023年菏泽医学专科学校单招综合素质题库及答案解析
- 九年级下册-2023年中考历史总复习知识点速查速记(部编版)
- GB/T 18103-2022实木复合地板
- 酿酒工艺教案
- 地形图的识别及应用涉密地图的保密管理课件
- 小学四年级语文阅读理解专项训练
- 辅导班合伙人合同范本(2篇)
- 2021年嘉兴市法院书记员招聘考试试题及答案解析
- 《念奴娇赤壁怀古》名量教学实录(特级教师程翔)
评论
0/150
提交评论