汇编语言课后习题答案.docx
- 文档编号:11206732
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:37
- 大小:34.88KB
汇编语言课后习题答案.docx
《汇编语言课后习题答案.docx》由会员分享,可在线阅读,更多相关《汇编语言课后习题答案.docx(37页珍藏版)》请在冰豆网上搜索。
汇编语言课后习题答案
第二章
1、答:
直接由指令指定的I/O端口数为256个。
2、答:
3、答:
字节单元:
(30022H)=ABH,(30024H)=EFH
字单元:
(30021H)=AB34H,(30022H)=CDABH。
4、答:
3017:
000A的存储单元的物理地址是3017AH,
3015:
002A的存储单元的物理地址是3017AH,
3010:
007A的存储单元的物理地址是3017AH。
5、答:
该程序的第一个字的物理地址是0AAA40H。
6、答:
条件标志OF、SF、ZF、CF的值依次分别为0、0、0、0。
7、答:
(1)AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL、
SP、BP、DI、SI(注意:
学生尽量不要用SP参与加减运算)
(2)CX
(3)DX、AX、AH、AL
(4)CS、DS、ES、SS
(5)FLAGS
(6)IP
(7)SS、SP、BP
8、答:
可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI、IP、CS、DS、
ES、SS。
9、答:
唯一正确的是D。
第三章
2、答:
(1)ADDDX,BX
(2)ADDAL,[BX][SI]
(3)ADD[BX+0B2H],CX
(4)ADD[0524H],2A59H
(5)ADDAL,0B5H
3、答:
(1)MOVBX,OFFSETBLOCK+0AH
MOVDX,[BX]
(2)MOVBX,0AH
MOVDX,BLOCK[BX]
(3)MOVBX,OFFSETBLOCK
MOVSI,0AH
MOVDX,[BX][SI]
4、答:
(1)1200H
(2)0100H
(3)4C2AH
(4)3412H
(5)4C2AH
(6)7856H
(7)65B7H
6、答:
MOVBX,2000H
LESDI,[BX]
MOVAX,ES:
[DI]
7、答:
(1)064DH
(2)0691H
(3)05ECH
9、答:
(1)MOVAX,[BX+0CH]
MOVZERO,AX
(2)MOVAX,ARRAY[BX]
MOVZERO,AX
10、答:
(1)(AX)=1234H
(2)(AX)=0032H
11、答:
(AX)=1E00H
12、答:
LEABX,CSTRING
MOVDL,[BX]
MOVDH,[BX+6]
13、答:
14、答:
LESBX,[2000]
MOVAX,ES:
[BX]
16、答:
(1)74D4HSF=0ZF=0CF=0OF=0
(2)A5C1HSF=1ZF=0CF=0OF=1
(3)3240HSF=0ZF=0CF=1OF=0
(4)0000HSF=0ZF=1CF=1OF=0
17、答:
(1)0C754HSF=1ZF=0CF=1OF=0
(2)12B0HSF=0ZF=0CF=0OF=0
(3)45B0HSF=0ZF=0CF=0OF=1
(4)9F24HSF=1ZF=0CF=0OF=0
21、答:
(1)MOVAX,Z
SUBAX,X
ADDAX,W
MOVZ,AX
(2)MOVBX,X
ADDBX,6
MOVCX,R
ADDCX,9
MOVAX,W
SUBAX,BX
SUBAX,CX
MOVZ,AX
(3)MOVAX,W
IMULX
MOVBX,Y
ADDBX,6
IDIVBX
MOVZ,AX
MOVR,DX
22、答:
NEGDX
NEGAX
SBBDX,0
16、答:
MOVAX,A
MOVDX,A+2
TESTDX,8000H
JZSTORE;为正
NEGDX
NEGAX
SBBDX,0
STORE:
MOVB,AX
MOVB+2,DX
17、答:
(1)MOVAL,S
SUBAL,6
DAS
ADDAL,V
DAA
MOVU,AL
(2)
MOVAL,Z
SUBAL,U
DAS
MOVU,AL
MOVAL,X
ADDAL,W
DAA
SUBAL,U
DAS
MOVU,AL
23、答:
(1)(BX)=9AH
(2)(BX)=61H
(3)(BX)=0FBH
(4)(BX)=1CH
(5)(BX)=0
(6)(BX)=0E3H
26、答:
把(DX)(AX)中的双字左移四位(乘以16)。
20、答:
MOVCL,4
SHRAX,CL
MOVBL,DL
SHRDX,CL
SHLBL,CL
ORAH,BL
31、答:
(1)CLD
MOVCX,132
MOVAL,20H
LEADI,ARRAY
REPSTOSB
(2)CLD
MOVCX,9
MOVAL,‘*’
LEADI,ADDR
REPNESCASB
JNEL1
L2:
……;找到
L1:
……;未找到
(3)CLD
MOVCX,30
MOVAL,20H
LEADI,NAME
REPESCASB
JNEDO_NOT
MOVCX,30
MOVAL,‘$’
LEADI,NAME
REPSTOSB
…
DO_NOT:
…
(4)CLD
MOVCX,30
LEASI,NAME
LEADI,ARRAY
REPMOVSB
STD
MOVCX,9
LEASI,ADDR+8
LEADI,ARRAY+131
REPMOVSB
34、答:
(1)转L1
(2)转L1
(3)转L2
(4)转L5
(5)转L5
36、答:
2p£q时,(AX)2
2p>q时,(AX)1
38、答:
(1)(AX)=5(BX)=16(CX)=0(DX)=0
(2)(AX)=2(BX)=4(CX)=3(DX)=1
(3)(AX)=3(BX)=7(CX)=2(DX)=0
39、答:
第四章
1、答:
(2)源操作数和目的操作数同为存储器寻址方式。
(3)SI、DI同为变址寄存器。
(7)目的操作数不能是代码段段寄存器CS。
(5)缺少PTR
5、答:
BYTE_VAR425954450CEE00?
?
-01020102?
?
00?
?
01
020102?
?
00?
?
0102-0102?
?
WORD_VAR0000010002000000-0100020000000100
0200000001000200-000001000200?
?
?
?
FBFF594245545602-
8、答:
PLENTH的值为22(16H)。
12、答:
(1)10025
(2)25
(3)2548
(4)3
(5)103
(6)0FFFFH
(7)1
(8)3
5假设数据段中数据定义如下:
VARDW'34'
VAR1DB100,'ABCD'
VAR2DD1
COUNTEQU$-VAR1
XDW5DUP(COUNTDUP(0))
YLABELWORD
ZDB'123456'
VDW2,$-VAR
执行下面程序段并回答问题。
MOVAX,COUNT;(AX)=?
MOVBX,Z-X;(BX)=?
MOVCX,V+2;(CX)=?
MOVDX,VAR;(DX)=?
MOVY+3,2
MOVSI,Y+4;(SI)=?
ADDZ+5,1
MOVDI,WORDPTRZ+4;(DI)=?
、答:
(AX)=9
(BX)=90
(CX)=109
(DX)=3334H
(SI)=3600H
(DI)=3700H
14、答:
(1)(AX)=1
(2)(AX)=2
(3)(CX)=20
(4)(DX)=40
(5)(CX)=1
17、答:
D_SEGSEGMENT
D_WORDLABELWORD
AUGENDDD99251
S_WORDLABELWORD
SUMDD?
D_SEGENDS
E_SEGSEGMENT
E_WORDLABELWORD
ADDENDDD-15962
E_SEGENDS
C_SEGSEGMENT
ASSUMECS:
C_SEG,DS:
D_SEG,ES:
E_SEG
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,D_SEG
MOVDS,AX
MOVAX,E_SEG
MOVES,AX
MOVAX,D_WORD
MOVBX,D_WORD+2
ADDAX,ES:
E_WORD
ADCBX,ES:
E_WORD+2
MOVS_WORD,AX
MOVS_WORD+2,BX
RET
MAINENDP
C_SEGENDS
ENDSTART
16、答:
DATASGSEGMENTAT0E000H
WORD_ARRAYLABELWORD
BYTE_ARRAYDB100DUP(?
)
DATASGENDS
STACKSGSEGMENTPARASTACK'STACK'
DW32DUP(?
)
TOSLABELWORD
STACKSGENDS
CODESGSEGMENT
ORG1000H
MAINPROCFAR
ASSUMECS:
CODESG,DS:
DATASG,ES:
DATASG,SS:
STACKSG
START:
MOVAX,STACKSG
MOVSS,AX
MOVSP,OFFSETTOS
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATASG
MOVDS,AX
MOVES,AX
……
RET
MAINENDP
CODESGENDS
ENDSTART
9编写一个完整的程序,要求把含有23H,24H,25H,26H四个字符数据的数据区复制20次。
、答:
DSEGSEGMENT
VAR1DB23H,24H,25H,26H
DSEGENDS
ESEGSEGMENT
VAR2DB80DUP('?
')
ESEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,ES:
ESEG
MAINPROCFAR
START:
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DSEG
MOVDS,AX
MOVAX,ESEG
MOVES,AX
MOVDX,20
CLD
LEADI,VAR2
AGAIN:
LEASI,VAR1
MOVCX,4
REPMOVSB
DECDX
JNZAGAIN
RET
MAINENDP
CSEGENDS
ENDSTART
第五章
1、答:
……
movcx,count
leasi,string1
leadi,string2
again:
moval,[si]
mov[di],al
incsi
incdi
loopagain
2、答:
codesegment
assumecs:
code
mainprocfar
start:
pushds
movax,0
pushax
movah,1
int21h
subal,30h
cmpal,0
jzexit
movcl,al
movch,0
again:
movah,2
movdl,7
int21h
loopagain
exit:
ret
mainendp
codeends
endstart
……
8、答:
MOVCX,8
MOVDL,0
NEXT3:
RORAX,1
JNCNEXT1
RORAX,1
JNCNEXT2
INCDL
NEXT2:
LOOPNEXT3
ADDDL,30H
MOVAH,2
INT21H
MOVAH,4CH
INT21H
NEXT1:
RORAX,1
JMPNEXT2
12、答:
……
movcx,100
leadi,mem
movax,0
cld
comp:
repnescasw
jcxzexit
pushcx
movsi,di
subdi,2
movbx,di
repmovsw
movwordptr[di],0
movdi,bx
popcx
jmpcomp
exit:
……
13、答:
……
movdx,100
movsi,0
repeat:
moval,string[si]
cmpal,30h
jbgoon
cmpal,39h
jagoon
orcl,20h;(cl)51
jmpexit
goon:
incsi
decdx
jnzrepeat
andcl,0dfh;(cl)50
exit:
……
14、答:
……
tabledw100hdup(?
)
mdatadw?
;存放出现次数最多的数
countdw0;存放出现次数
……
movbx,100h
movdi,0;di为数组TABLE的指针
next:
movdx,0
movsi,0
movax,table[di]
movcx,100h
comp:
cmptable[si],ax
jneaddr
incdx
addr:
addsi,2
loopcomp
cmpdx,count
jlechang
movcount,dx
movmdata,ax
chang:
adddi,2
decbx
jnznext
movcx,count
movax,mdata
……
19、答:
……
adw15dup(?
)
bdw20dup(?
)
cdw15dup(?
)
……
movsi,0;si为数组A的指针
movbx,0;bx为数组C的指针
movcx,15
loop1:
movdi,0;di为数组B的指针
pushcx
movcx,20
movax,a[si]
loop2:
cmpb[di],ax
jneno
movc[bx],ax
addbx,2
jmpnext
no:
adddi,2
looploop2
next:
addsi,2
popcx
looploop1
21、答:
……
movdx,0
leasi,array
movax,[si]
movbx,[si+2]
cmpax,bx
jnenext1
incdx
next1:
cmp[si+4],ax
jnenext2
incdx
next2:
cmp[si+4],bx
jnenum
incdx
num:
cmpdx,3
jldisp
decdx
disp:
movah,2
adddl,30h
int21h
……第六章
2、答:
2、答:
(1)NAME1NAMELIST<>
(2)MOVAX,DATA;假设结构变量NAME1定义在数据段DATA中
MOVDS,AX
MOVES,AX
;
MOVAH,10
LEADX,NAME1
INT21H
;
MOVCL,NAME1.ACTLEN
MOVCH,0
LEASI,NAME1.NAMEIN
LEADI,DISPFILE
CLD
REPMOVSB
6、答:
SKIPLINESPROCNEAR
PUSHCX
PUSHDX
MOVCX,AX
NEXT:
MOVAH,2
MOVDL,0AH
INT21H
MOVAH,2
MOVDL,0DH
INT21H
LOOPNEXT
POPDX
POPCX
RET
SKIPLINESENDP
7、答:
dsegsegment
numdw76,69,84,90,73,88,99,63,100,80
ndw10
s6dw0
s7dw0
s8dw0
s9dw0
s10dw0
dsegends
codesegment
mainprocfar
assumecs:
code,ds:
dseg
start:
pushds
subax,ax
pushax
movax,dseg
movds,ax
callsub1
ret
mainendp
sub1procnear
pushax
pushbx
pushcx
pushsi
movsi,0
movcx,n
next:
movax,num[si]
movbx,10
divbl
movbl,al
cbw
subbx,6
salbx,1
incs6[bx]
addsi,2
loopnext
popsi
popcx
popbx
popax
ret
sub1endp
codeends
endstart
8、答:
datasegment
maxlendb40
ndb?
tabledb40dup(?
)
chardb'a';查找字符’a’
even
addrdw3dup(?
)
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
pushds
movax,0
pushax
movax,data
movds,ax
leadx,maxlen
movah,0ah
int21h;从键盘接收字符串
movaddr,offsettable
movaddr+2,offsetn
movaddr+4,offsetchar
movbx,offsetaddr;通过地址表传送变量地址
callcount;计算CHAR的出现次数
calldisplay;显示
ret
mainendp
countprocnear;count子程序
pushsi
pushdi
pushax
pushcx
movdi,[bx]
movsi,[bx+2]
movcl,byteptr[si]
movch,0
movsi,[bx+4]
moval,byteptr[si]
movbx,0
again:
cmpal,byteptr[di]
jnel1
incbx
l1:
incdi
loopagain
popcx
popax
popdi
popsi
ret
countendp
displayprocnear;display子程序
callcrlf;显示回车和换行
movdl,char
movah,2
int21h
movdl,20h
movah,2
int21h
moval,bl
andal,0fh
addal,30h
cmpal,3ah
jlprint
addal,7
print:
movdl,al
int21h
callcrlf
ret
displayendp
crlfprocnear;crlf子程序
movdl,0dh
movah,2
int21h
movdl,0ah
movah,2
int21h
ret
crlfendp
codeends
endstart
第七章
1、答:
CLRBMACRON,ARRAY
CLD
MOVCX,N
MOVAL,20H
LEADI,ARRAY
REPSTOSB
ENDM
2、答:
WAGESMACRORATE,HOUR
MOVAL,RATE
MOVBL,HOUR
MULBL;计算周工资
;
ADDAX,AX
ADDAX,AX;一个月有4周
MOVWAG,AX;暂存中间结果
ADDBL,BL
ADDBL,BL;计算月出工小时数
MOVAL,BL
MOVAH,0
MOVBL,10
DIVBL
MOVBL,3
MULBL;计算奖金
ADDWAG,AX;计算工资总数
ENDM
宏展开:
1MOVAL,R1
1MOVBL,42
1MULBL
1ADDAX,AX
1ADDAX,AX
1MOVWAG,AX
1ADDBL,BL
1ADDBL,BL
1MOVAL,BL
1MOVAH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课后 习题 答案