汇编语言课后习题答案郑晓薇后的.docx
- 文档编号:17121993
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:55
- 大小:1.19MB
汇编语言课后习题答案郑晓薇后的.docx
《汇编语言课后习题答案郑晓薇后的.docx》由会员分享,可在线阅读,更多相关《汇编语言课后习题答案郑晓薇后的.docx(55页珍藏版)》请在冰点文库上搜索。
汇编语言课后习题答案郑晓薇后的
2
5E8AH,0BE6H,3DEH,
4940H
3
00011101+0011010仁010
10010=52H=82
5000020A3H,FF94H,
00003456H,007FH,
FFFFEC00H
6无符号数:
0〜65535,0000H〜FFFFH;带符号数:
-32768〜+32767,8000H
(1)38H等于十进制数56,是
十进制数56的补码,数字8的
ASCII码,十进制数38的压缩
BCD码
(2)FFH等于十进制数-1,是带符号数-1的补码,无符号数为
255
⑶5AH等于十进制数90,是十进制数90的补码,大写字母
Z的ASCII码
⑷0DH等于十进制数13,是十进制数13的补码,回车符的
ASCII码
8
⑵46=00101110B=2EH,
补码00101110B,压缩BCD码01000110,ASCII码
3436H
7FFFH
(1)56+63=01110111B,
CF=O,SF=O,ZF=O,OF=0⑵83-45=00100110B,
CF=0,SF=0,ZF=0,OF=0
⑷-92—37=01111111B,
CF=1,SF=0,ZF=0,OF=1
10
回车、换行、响铃、ESC键、空
格键、@、P、p
习题二
9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)
10CS:
IP,DS:
BX、SI、DI,ES:
BX、SI、DI,SS:
SP、BP
11字节单元保存8位数,字单元保存16位数。
根据源操作数的属性确定要访问的是字节单元还是字单元。
12对于字节单元来说,偶地址和奇地址一样;对于字单元而言,
最好用偶地址保存,可减少CPU
的访存次数。
13首单元的物理地址
=38AE8H,末单元的物理地址
=38AE8H+7FFFH=40AE7H
16
(1)物理地址=27679H
(2)
物理地址=20F92H(3)物理地址=20F92H
(2)和(3)的物理地址是一样的。
说明逻辑地址不唯一,多个逻辑
地址可对应到同一个物理单元上。
17代码段CS:
IP的物理地址
=55A84H堆栈段SS:
SP的物
理地址=4DB65H
数据段DS:
BX的物理地址
=17678H附加段ES:
DI的物
理地址=2BA41H
18当前栈指针所指单元的物
理地址是1522CH。
堆栈区中还能保存254个字。
19执行E200
20执行U100
21执行RCX,然后输入100
22执行EDS:
O‘a'‘b'
习题三
3MOVAX,BX源操作数为
寄存器寻址,EA无,物理地址
无
MOVAX,1290H
立即寻址,EA
无,物理地址无
MOVAX,[BX]寄存器间接寻
址,EA=1290H,
物理地址
=2FBB0H
MOVAX,DS:
[1290H]直接寻
址,EA=1290H,
物理地址
=2FBB0H
MOVAX,[BP]寄存器间接寻
址,EA=6756H,
物理地址
=26A56H
MOV[DI][BX],AX
目的操作
数为基址变址寻址,
EA=3C06H,
物理地址=32526H
MOVES:
[SI],AX寄存器间接寻址,EA=348AH,物理地址=50CAAHd'
7
MOVAX,[CX]错。
CX不能为间址寄存器
MOVAL,1200H错。
立即数超
出8位寄存器范围
MOVAL,BX错。
两个操作数不匹配
MOV[SI][DI],AX错。
两个变址寄存器不能在一起
MOVES:
[DX],CX错。
DX不能为间址寄存器
MOV[AX],VALUE错。
AX不
能为间址寄存器
MOVCOUNT,[SI]错。
两个操作数不能都是存储单元
8
(1)MOVAX,BX
(2)MOV
(4)MOV[BX+SI],AL(5)
MOVAX,VALUE[SI](6)SUB
AX,DS:
[2000H]
9
(1)ADDAX,[X+4]
MOVY,AX
⑵MOVBX,4
ADDAX,X[BX]
MOVY,AX
⑶MOVBX,4
MOVSI,OFFSETX
ADDAX,[BX+SI]
MOVY,AX
10立即寻址方式中操作数
(立即数)和指令一起存放在代码段中。
习题四
10
(1)DATASEGMENT
XDW0
YDW0
DATAENDS
(2)STRINGDB'Computer
(3)COUNTDB100DUP()
⑷PIEQU
(5)VALUELABELBYTE
11
(1)对。
(2)错。
260超出了字节范围。
(3)错。
X3是字节型,1234H是字型,不匹配。
(4)对。
(5)错。
缺少DUP。
(6)对。
12
(1)AL=3。
(2)
AX=2103H。
(3)DX=TABLE
的偏移地址。
(4)CL=33H
(5)BX=TABLE的段地址。
(6)
BX=1。
(7)DX=TABLE的偏移地址。
13
MOVDX,2012H
MOVAX,5D68H
MOVCX,1003H
MOVBX,49A6H
ADDAX,BX(SUBAX,BX)
ADCDX,CX(SBBDX,CX)
13SUBAX,CX
SBBDX,0
CBW
15MOVAX,extra
ADDDX,AX
MOVES,AX
MOVAH,0
16
MOVAL,W
(1)MOVAL,16
IMULAL
ADDAL,X
SUBDX,AX
MOVBL,5
MOVZ,DX
IMULBL
(4)MOVAL,X
MOV乙AX
ADDAL,Y
(2)MOVBL,4
MOVBL,X
MOVAL,X
SUBBL,Y
IDIVBL
MOVAH,0
SUBAL,Y
IMULBL
MOV乙AX
MOV乙AX
(3)MOVAL,X
MOVAL,X
MOVBL,8
IDIVY
IMULBL
CBW
MOVDX,AX
SUBZ,AX
MOVAH,0
17Z=(5+22-15)*14二
MOVAL,Y
168
MOVBL,16
18从伪指令ENDSTART处
IDIVBL
获知程序从START标号开始。
19
(1)减法:
(2)加法:
MOVAX,8576HMOV
AX,8576H
MOVBX,9988HMOV
BX,9988H
SUBAX,BXADDAX,BX
结果:
AX=EBEEH结果:
AX=1EFEH
CF=1,OF=0,ZF=0,SF=1
CF=1,OF=1,ZF=0,SF=0
21
(1)MOVAL,56H
MOVBL,34H
ADDAL,BL
DAA
MOVY1,AL
(2)MOVAX,128H
MOVBX,35H
SUBAX,BX
DAS
MOVY2,AL
(3)MOVAL,68H
MOVBL,23H
ADDAL,BL
MOVBL,45H
SUBAL,BL
DAS
MOVY3,AL
22
(1)MOVAX,0708H
MOVBX,0406H
ADDAL,BL
ADDAH,BH;不用带进位加
AAA;加法调整,含进位调整
MOVBX,AX
XCHGAH,AL;高4位调整
AAA
MOVBH,AL
MOVZ1,BX;保存十位、各位,
百位在CF中
(2)MOVAX,0905H
MOVBX,0207H
SUBAL,BL
SUBAH,BH;不用带借位减
AAS;减法调整
MOVZ2,AX
(3)MOVAX,0102H
MOVBX,0006H
MULBX;乘法先不用调整
MOVBX,0303H
SUBAX,BX
AAS;减法调整
MOVZ3,AX
(4)MOVAX,0704H
MOVBX,0108H
ADDAL,BL
ADDAH,BH
AAA;加法调整
MOVBL,6
AAD;除法调整
DIVBL
MOVBH,AH;余数保存在BH
ANDAX,000FH
AAA;商调整
MOVZ4,AX;保存商
23
.modelsmall
.data
buffdb?
.code
start:
movax,@data
movds,ax
movah,1;键盘输入
int21h
subal,30h;去掉ASCII码
movbuff,al
movah,4ch
int21h
endstart
24
.modelsmall
.code
start:
movah,1;键盘输入
int21h
subal,20h;变为大写
movdl,al
movah,2
movbx,ax
int21h
movdl,bh;显示4
movah,4ch
movah,2
int21h
int21h
endstart
movdl,bl;显示6
25
int21h
.modelsmall
movah,4ch
.data
int21h
xdb12h
endstart
ydb34h
26
.code
datasegment
start:
xdb'','',",","
movax,@data
db'','',",",";建立字符表
movds,ax
ydb5dup();存放查到平方根
moval,x
udb3;要查的数
addal,y;结果为46H
dataends
movah,al;AH=46H
codesegment
andal,Ofh;AL=06H
assumecs:
code,ds:
data
movcl,4
start:
rolah,cl;AH=64H
movax,data
andah,0fh;AH=04H
movds,ax
addax,3030h;AX=3436H
moval,u;要查的数
movcl,5
x3db'wangIan$'
mulcl;u*5=15(
号单元开始)
x4db'zhaoxue$'
movah,0
x5db'lijiang$'
movbx,ax;地址保存至Ubx
udb3;要查的学号
movsi,0
.code
letl:
start:
moval,x[bx];
取出平方根数
movax,@data
字
movds,ax
movy[si],al;
存入y
moval,u;给出学号
incsi
movcl,10
incbx
mulcl;u*10=30(号单元开
loopletl;循环取出5次
始)
movah,4ch
movah,0
int21h
movdx,ax;地址保存至Udx
codeends
movah,9;9号功能显示字符
endstart
串
27
int21h
.modelsmall
movah,4ch
.data
int21h
x1db'zhangyan$';姓名为
endstart
10个字符宽度
28编程实现公式计算
x2db'lili$'
Z=X/4+16Y。
.modelsmall
.data
.data
ydb,?
xdb4
.code
ydb6
start:
zdb?
movax,@data
.code
movds,ax
start:
moval,3;设al=3
movax,@data
movcl,6
movds,ax
mulcl;al*6
moval,x;
movcl,4;设cl=4
movcl,2
subal,cl;相减
saral,cl;X/4
movbl,3
movcl,4
idivbl;/3
movbl,y
movy,al;商
salbl,cl;16Y
movy+1,ah;余数
addal,bl;X/4+16Y
movah,4ch
mov乙al
int21h
movah,4ch
endstart
习题五
int21h
11进位标志CF=1
endstart
12先把AX的值除以8等于
29
0246H,再把咼12位屏蔽为0,
.modelsmall
DATASEGMENT
XDB23
YDB?
DATAENDS
CODESEGMENT
ASSUME
CS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,0
JESUB2
JGSUB1
MOVCL,2
SALAL,CL
JMPSHORTSUB2
SUB1:
ADDAL,3
SARAL,1
SUB2:
MOVY,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
28
设X、Y、Z为字节单元。
如果
X>0,Z=4X-Y/16,否则,Z=X
的绝对值。
编程序实现。
程序如下:
DATASEGMENT
XDB3
YDB5
ZDB?
DATAENDS
CODESEGMENT
ASSUME
CS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X
CMPAL,0
JLSS1
MOVCL,4
SARBL,CL
SUBAL,BL
JMPOUT1
SS1:
NEGAL
OUT1:
MOV乙AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
29字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、
ZERO单元。
程序如下:
DATA1SEGMENT
MDW
21,-34,32,112,-324,0,76,0,
48,50
MOVCL,2POSIDW?
SALAL,CLNEGADW?
MOVBL,YZERODW?
CODE1ENDS
ENDSTART
30试编写程序,从键盘接收一
英文单词,以空格结束,将其存
入BUF开始的存储单兀中,并在
最后加上字符串结束符’$'
主要程序部分:
LEABX,BUF
LOP:
MOVAH,1
INT21H
CMPAL,20H
JENEXT
MOV[BX],AL
INCBX
JMPLOP
NEXT:
MOVBYTE
PTR[BX],'$'
31
编程。
将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。
程序段:
START:
MOVAX,1234H
MOVBX,AX
ANDAL,0FH;4
ANDBL,0F0H;3
ANDAH,0FH
MOVCL,AH;2
ANDBH,0F0H
MOVDL,BH;1
习题六
11累加和TOTAL=83
12循环统计X中0的个数
13
(1)将BB1:
RCLAL,1改为
BB1:
ROLAL,1
(2)将BB2:
CMP[BX],'T'
LOOPNEBB2
改为:
DECBX
BB2:
INCBX
CMP[BX],'T'
LOOPNEBB2
15计算
Y=1x2+3x4+5x6+7x8+9
X10的程序段答案:
MOVAL,1
MOVBL,2
MOVDX,0
MOVCX,5
AA1:
MULBL
ADDDX,AX
INCBL
MOVAL,BL
INCBL
LOOPAA1
16写程序段。
查找CATT表中的字符”@,找到后将SIGN单元置1,否则SIGN单元置0。
cattdb'asd@ddd'
signdb?
movax,extra
moves,ax
movsign,0
moval,@
cmpsi,0
leadi,catt
jgelet1;let1
cld
incax;为负数,ax加1
movcx,7
let1:
addbx,2
repnzscasb
looprept1
jcxznee
18从键盘输入一个数字,在屏幕
movsign,1
上显示出以该数字开始10个数
nee:
movah,4ch
字串。
int21h
CODESEGMENT
17写程序段。
在长度为N的字
ASSUMECS:
CODE
数组VALUE中统计负数的个数
START:
MOVAH,1
并保存到AX中。
INT21H
valuedw2,-4,-5,3,6,6,-8
MOVCX,10
nequ($-value)/2;兀素个数
MOVBL,AL
REPT1:
CMPBL,9
start:
movax,data
JLENEXT
movds,ax
SUBBL,10
movcx,n
NEXT:
MOVDL,BL
movbx,0
MOVAH,2
movax,0
INT21H
rept1:
INCBL
movsi,value[bx];取出兀素
LOOPREPT1
MOVAH,4CH
moval,[si]
INT21H
cmpal,[di];两字符比较
CODEENDS
jzequl;相同转equl
ENDSTART
incbl;不同bl加1
19
jmpout1
datasegment
equl:
incbh
bunch1db'stadent'
out1:
incsi
bunch2db'studEnt'
incdi
dataends
looplet1
codesegment
movdl,'n';显示'n',代表不同
assume
movah,2h
cs:
code,ds:
data,es:
data
int21h
start:
addbl,30h;加上ASCII码
movax,data
movdl,bl;显示不同的个数
movds,ax
int21h
moves,ax
movdl,'e';显示'e',代表相同
leasi,bunch1
int21h
leadi,bunch2
addbh,30h
movbx,0;bh=相同的个数,
movdl,bh;显示相同的个数
bl=不同的个数
int21h
movcx,7
movah,4ch
let1:
int21h
codeends
endstart
21
DATASEGMENT
STRDB‘SDABFGHO'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADI,STR
SPACE:
MOVCX,10
MOVAL,[DI]
CMPAL,0
JEOUT
CMPAL,20H
JEDELETE
JMPEXIT
SUBCX,DI
MOVSI,DI
DELETE:
MOVBL,[SI+1]
MOV[SI],BL
INCSI
LOOPDELETE
EXIT:
JMPSPACE
OUT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
23设计思路:
(1)用EQU伪指令获得需转换的十进制数的个数;
(2)用双重循环。
外循环控制个数,用x作为中间变量;
(3)内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;
(4)分两个数组保存ASCII码表示的十进制数和转换后的二进制数。
程序如下:
;将内存中用ASCII码表示的
100以内的十进制数转变为二进
制数
datasegment
scoreldb
36h,37h,20h,31h,30h,30h,
38h,35h,20h,31h,30h,30h;
即67,100,85,100
xdw?
nequ3;三位数
numequ(x-score1)/n;十进
制数个数
score2dwnumdup(0);保存
转换后的二进制数
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movcx,num
movsi,-2
rept1:
pushcx;保存外循环次
数
movcx,n
rept2:
moval,score1[bx];
从score1取数
cmpal,30h;判断是否0-9
jlexit
cmpal,39h
jgexit
andax,000fh;去掉ASCII码
xchgax,x
movdx,10;将ax中前一次形
成的数扩大10倍
muldx
xchgax,x
addx,ax;相加后保存到x
exit:
incbx;取下一位数
looprept2
popcx;弹出外循环次数
addsi,2
movbx,0
movax,x
movscore2[si],ax;转换后的
数据保存到score2
movx,0
loopreptl
movah,4ch
int21h
codeends
endstart
习
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课后 习题 答案 郑晓薇后