汇编语言 李目海版 课后答案.docx
- 文档编号:8689348
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:21
- 大小:18.89KB
汇编语言 李目海版 课后答案.docx
《汇编语言 李目海版 课后答案.docx》由会员分享,可在线阅读,更多相关《汇编语言 李目海版 课后答案.docx(21页珍藏版)》请在冰豆网上搜索。
汇编语言李目海版课后答案
Chapt3
P44
T1ops opd
① 立即数寻址 R寻址
② R间接寻址 R寻址
③ 变址寻址 R寻址
4基址加变址寻址 R寻址
⑤ R寻址 变址寻址
⑥ 立即数寻址 R寻址
⑦ 基址加变址寻址 R寻址
T2
指令
是否正确
OPD地址
执行前
执行后
Movax,3
√
AX
0AAH
3
Sub[ax],3
×
Subbx,ax
√
BX
0BBH
0AAH
Addbx,2
√
BX
0BBH
0BDH
Subbp,2
√
BP
5000H
4FFEH
Sub[cx],2
×
Adddi,2
√
DI
6000H
6002H
Mov[bx],bx
√
100BBH
200H
00BBH
Moves:
[dx],bx
×
Movdx,bx
√
DX
0DDH
0BBH
Sub2[dx],ax
×
Add500h[bp],ax
√
35500H
355H
3FFH
Sub[si-300h],ax
√
13D00H
0F13DH
0F073H
Mov[ax+2],bx
×
T3
①(AX)=1200H ②(AX)=0100H ③(AX)=1200H
④(AX)=3412H ⑤(AX)=4C2AH ⑥(AX)=7856H
⑦(AX)=65B7H
T4
①× 类型不一致 MOV AX,BX
②√
③× 无类型 INC BYTE PTR [BX]
④×立即数不能为目的操作数 moval,5
⑤× 两个操作数不能同时为存储器操作数 movax,[si]
mov[bx],ax
⑥√
⑦√
⑧×CS不能为目的操作数
⑨× 立即数不能传送给段寄存器操作数
Movax,3278h
Moves,ax
⑩×堆栈为字操作,AL为字节寄存器 pushax
Chapt4
P57
T2参考4.4.4
T3
0
0da1
0
1da2
41h
2
41h
3
0
4
41h
5
0
6adr
0
7
1
8
0
9
4100h的字单元有2个 偏移为1 和4
T4 16个
T5 var1dw‘ba’,’dc’,’fe’,’hg’,’ji’
或var2db‘badcfehgji’
P63
T2(AX)=3433h
P65
T1
01h
0x
02h
1Z
03h
2
58h
3y
34h
4
(Z)=302h
T2
01h
0x
02h
1
03h
2
3
58h
4y
34h
5
T3y=($-x)/2
T4
11 data1db0fh
2Movax,data1
21data2db,10h
2movbl,data2
31data3db‘EFDABC’
2DATA3DW‘FE’,’AD’,’CB’
④1DATA4DW3E2H
2DATA4DB0E2H,3
⑤1ASSUMECS:
COSEG,DS:
DASEG1
2ASSUMECS:
COSEG,DS:
DASEG2.ES:
DASEG1
T5ORG16或db16dup(?
)
ORG32或 db12dup(?
)或 align16
Chapt6
P93
T1① CMP CX,DX
JA LL
② CMP AX,BX
JNG LL
③ CMP DX,0
JE LL
④ CMP CX,DX
JBE LL
T2 DATA SEGMENT
A DW X
B DW X
C DW X
MSG1 DB ‘Yes$’
MSG2DB‘NO$’
DATA ENDS
CODE SEGMENT
ASSUME DS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
MOVBX,B
MOVCX,C
ADDAX,BX
CMPAX,CX
JLELLN
ADDBX,CX
CMPBX,A
JLELLN
ADDCX,A
CMPCX,B
JLELLN
LEADX,MSG1
JMPEXIT0
LLN:
LEADX,MSG2
EXIT0:
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T3
DATASEGMENT
BUFFERDBX,X,X
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUFFER
CMPAL,BUFFER+1
JBELL1
XCHGAL,BUFFER+1
MOVBUFFER,AL
LL1:
MOVAL,BUFFER+1
CMPAL,BUFFER+2
JBELLEX
XCHGAL,BUFFER+2
MOVBUFFER+1,AL
MOVAL,BUFFER
CMPAL,BUFFER+1
JBELLEX
XCHGAL,BUFFER+1
MOVBUFFER,AL
LLEX:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
CHAPT7
Chapt7
P98
T1
DATASEGMENT
tabdb100,…..
xdb…
dataends
codesegment
assumeds:
data,cs:
code
start:
movax,data
movds,ax
leasi,x
movdi,si
movcl,tab
movch,0
movdx,cx
moval,x
next:
decsi
cmpal,[si]
jeexit0
jlll1
loopnext
ll1:
subdx,cx
jell2
movcx,dx
next2:
movbl,[di-1]
mov[di],bl
decdi
loopnext2
ll2:
inctab
mov[di],al
exit0:
movah,4ch
int21h
codeends
endstart
T2① 8 ② 8 ③ 2 ④ ‘A’ ⑤ 5 ⑥ EAST
T3BUF[0]=34HBUF[1]=0B0HBUF[2]=08HBUF[3]=76HBUF[0]=04H
P103
T1
DATASEGMENT
SUMDW?
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVCX,100
MOVAX,0
NEXT:
ADDAX,CX
LOOPNEXT
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
P110
T2
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,'0'
JBEXIT0
CMPAL,'9'
JAEXIT0
SUBAL,30H
MOVAH,0
MOVCX,AX
NEXT:
MOVDL,'B'
MOVAH,2
INT21H
LOOPNEXT
EXIT0:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T3
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAX,4000H
MOVDS,AX
MOVSI,0
MOVCX,16*1024
MOVDX,0
MOVAL,'A'
NEXT:
CMPAL,[SI]
JNELL1
INCDX
LL1:
INCSI
LOOPNEXT
EXIT0:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T4
(1)①BUF[0]=12H ②BUF[1]=03H ③BUF[2]=76H ④BUF[3]=08H ⑤BUF[4]=18
⑥BUF[0]=2 ⑦BUF[1]=18 ⑧BUF[3]=5
(2)(BX)=1时,BUF[1]=2①,(BX)=2时,BUF[1]=15② (CX)=29 ③
(3)(AX)=400H ① 如用指令LOOPNZ替代上述程序中的LOOP指令,那么执行到同一位置时:
(AX)=400H ②,(CX)=0 ③。
P110
T1时钟周期=1/频率=1/80MHZ=0.0125Ms
Loop指令执行时间=2*时钟周期
2S/(2*时钟周期)=320*216
CODE SEGMENT
ASSUME CS:
CODE
START:
MOVDX,320
MOVCX,0
NEXT:
LOOPNEXT
DECDX
JNENEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T2
DATASEGMENT
buf1db0ah,0dh
BUFDB100DUP(?
)
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
NEXT:
MOVAH,1
INT21H
CMPAL,'a'
JBEXIT0
CMPAL,'z'
JAEXIT0
SUBAL,20H
MOV[SI],AL
INCSI
JMPNEXT
EXIT0:
MOVBYTEPTR[SI],'$'
LEADX,BUF1
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T3
(1)
DATASEGMENT
BUFDB50DUP(?
)
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
movcx,0
NEXT:
MOVAH,1
INT21H
CMPAL,0dh
JeEXIT0
CMPCX,50
JeEXIT0
MOV[SI],AL
INCSI
INCCX
JMPNEXT
EXIT0:
MOVDL,0AH
MOVAH,2
INT21H
NEXT1:
DECSI
MOVDL,[SI]
MOVAH,2
INT21H
LOOPNEXT1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(2)
DATASEGMENT
BUFDB51,?
51DUP(?
)
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,10
LEADX,BUF
INT21H
MOVCL,BUF+1
MOVCH,0
LEASI,BUF+1
ADDSI,CX
MOVDL,0AH
MOVAH,2
INT21H
NEXT1:
MOVDL,[SI]
MOVAH,2
INT21H
DECSI
LOOPNEXT1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T4
DATASEGMENT
VAR1DB55
VAR2DB66
VAR3DB66
ERRODB?
ADDRDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,VAR1
CMPAL,VAR2
JELL1
CMPAL,VAR3
JELL2
MOVADDR,OFFSETVAR1
JMPEXIT0
LL1:
MOVAL,VAR3
MOVADDR,OFFSETVAR3
JMPEXIT0
LL2:
MOVAL,VAR2
MOVADDR,OFFSETVAR2
EXIT0:
MOVERR0,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T5
DATASEGMENT
BUFDB12,-10,45,-34
N=$-BUF
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,N
DECCX
MOVDX,0
NEXT:
MOVAL,[SI],
XORAL,[SI+1]
JNSLL1
INCDX
LL1:
INCSI
LOOPNEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T6
DATASEGMENT
STUDENTDW60,70,56,90,67
N=($-STUDENT)/2
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,STUDENT
MOVCX,N
NEXT2:
MOVAL,[SI]
MOVBL,1
LEADI,STUDENT
MOVDX,N
NEXT1:
CMPAL,[DI]
JGELL1
INCBL
LL1:
INCDI
INCDI
DECDX
JNENEXT1
INCSI
MOV[SI],BL
INCSI
LOOPNEXT2
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T7
DATASEGMENT
DA1DW60,70,56,90,67
N=($-STUDENT)/2
DA2DW60,80,60,70,50
COUTDB0,0,0
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,DA1
MOVCX,N
LEADI,DA2
NEXT2:
MOVAX,[SI]
CMPAX,[DI]
JSLL1
JELL2
INCCOUT
JMPLL3
LL1:
INCCOUT+2
JMPLL3
LL2:
INCCOUT+1
LL3:
INCSI
INCSI
INCDI
INCDI
LOOPNEXT2
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
P114
T1①× CMPSW不能用REP重复前缀
②× MOVSB不能用REPZ重复前缀
③× [DI]无类型
④× STOS得带源串地址
⑤√
⑥× [SI]无类型
T2
codeSEGMENT
ASSUMECS:
code,DS:
CODE,ES:
CODE
START:
MOVAX,CS
MOVDS,AX
MOVES,AX
MOVSI,300H
MOVDI,400H
MOVCX,100H
REPMOVSB
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
T3
DATASEGMENT
STR1DB'WORD'
N=($-STR1)
STR2DB'WORD'
N2=$-STR2
MSG1DB'MATCH$'
MSG2DB'NOMATCH$'
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,N
CMPCX,N2
JNENMATCH
LEASI,STR1
LEADI,STR2
REPZCMPSB
JNZNMATCH
LEADX,MSG1
JMPEXIT0
NMATCH:
LEADX,MSG2
EXIT0:
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
Chapt8
P131
T1
DATASEGMENT
MSG1DB‘请输入0 ̄9之间的数字$'
DATAENDS
HDCPROC
PUSHAX
PUSHDX
PUSHCX
MOVBX,0
NKEY:
MOVAH,1;键盘输入
INT21H
CMPAL,30H;若为数字0~9则转DIGIT
JLEXIT
CMPAL,3AH
JLDIGIT
CMPAL,41H;若为十六进制数字A~F则转CHAR
JLEXIT
CMPAL,47H
JLCHAR
CMPAL,61H;若为十六进制数字a~f则继续,否则退出
JLEXIT
CMPAL,67H
JGEEXIT
SUBAL,20H
CHAR:
SUBAL,7
DIGIT:
SUBAL,30H;十六进制字符转换为十六进制数字
MOVCL,4;将上次的结果左移四位加本次输入的数
SHLBX,CL
MOVAH,0
ADDBX,AX
JMPNKEY
EXIT:
LEADX,MSG1
MOVAH,9
INT21H
POPCX
POPDX
POPAX
RET
HDCENDP
T2
DATASEGMENT
DATABDB10,20,30,60,66,67,68,90,98,80…….
N=$-DATAB
BTRXDB5DUP(0)
AVERDW?
DATAENDS
codeSEGMENT
ASSUMECS:
code,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,N;80
LEASI,DATAB
MOVBX,0
MOVAH,0
NEXT:
LODSB
ADDBX,AX
CMPAL,60
JLL60
CMPAL,70
JLL70
CMPAL,80
JLL80
CMPAL,90
JLL90
INCBTRX+4
JMPLL
L60:
INCBTRX
JMPLL
L70:
INCBTRX+1
JMPLL
L80:
INCBTRX+2
JMPLL
L90:
INCBTRX+3
LL:
LOOPNEXT
MOVDX,0
MOVCX,N
DIVCX
MOVAVER,AX
EXIT0:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 李目海版 课后答案 课后 答案