汇编语言课后答案Word格式文档下载.docx
- 文档编号:19771832
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:24
- 大小:34.60KB
汇编语言课后答案Word格式文档下载.docx
《汇编语言课后答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言课后答案Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
主要存放当前运行程序所用的数据。
堆栈段:
指明当前运行程序所使用的堆栈区域。
1-8
见P4-P5
1-9
见课件
1-10
见P25-P27
1-11
见P16或者课件
1-12
见P17或者课件
1-13
FFH,Again,next,h_asscii
1-14
见P27或者课件
2-1
(1)没有,因为8位字节表示的范围:
0~255
(2)没有,都是46H
(3)因为(34+67H)*3是常数
(4)以避免与不能以数字开头的标识符混淆
(5)不能,因为8位字节表示的范围:
(6)防止发生非法操作
(7)寻找操作数存储的地址
(8)有效地址直接包含在指令中
(9)DS
(10)不正确,因为类型不匹配
2-2
,小写字母排在大写字母之后
(3)√
(4)×
,不一样多
(5)√
,没有对齐,因为0403H是奇数地址,不是偶数地址
(9)√
2-3
(1)97,61,a
(2)0DH,0AH
(3)DB,OFFSET
(4)8843H
(5)DWORD,4,WORDPTR
(6)3
(7)立即数寻址,寄存器寻址,存储器寻址
(8)寄存器寻址,立即数
(9)4028H
(10)DS,SS
2-4
(1)255
(2)0
(3)94
(4)239
2-5
(1)00010010B
(2)00100100B
(3)01101000B
(4)10011001B
2-6
(1)91
(2)89
(3)36
(4)90
2-7
(1)0B
(2)01111111B
(3)10000001B
(4)11000111B
2-8
(1)8A36H,CF=0
(2)4AE4H,CF=1
(3)0AE10H,CF=0
(4)0ECA9H,CF=1
2-9
数码0~9:
30H~39H
大写字母A~Z:
41H~5AH
小写字母a~z:
61H~7AH
0DH:
回车符CR,0AH:
换行符LF
2-10
Datasegment
my1bDB‘PersonalComputer’
my2bDB20
my3bDB14h
my4bDB00010100B
my5wDW20DUP(?
)
my6cEQU100
my7cEQU<
PersonalComputer>
Dataends
2-11
NUM=5
DATALISTDW-10,2,5,4,?
2-122-13
-
movax,offsetmess
;
AX=114H
movax,typebuff+typemess+typevard
AX=1+1+4=6
movax,sizeofvarw+sizeofbuff+sizeofmess
AX=2*2+10*1+5*1=19
movax,lengthofvarw+lengthofvard
AX=2+1=3
0FFH
0FBH
o
118H
00H
l
117H
10H
116H
04H
e
115H
mess
h
114H
113H
112H
111H
110H
10FH
10EH
10DH
10CH
10BH
buff
10AH
12H
109H
34H
108H
56H
107H
46H
vard
78H
106H
45H
105H
varb
03H
104H
0AH
103H
43H
102H
42H
101H
41H
varw
100H
2-14
略
2-15
varDD12345678H
movbx,wordptrvar;
BX=5678H
movcx,wordptrvar+2;
CX=1234H
movdl,byteptrvar;
DL=78H
movdh,byteptrvar+3;
DH=12H
var
2-16
P56图2-10和图2-11
2-17
(1)立即数寻址
(2)直接寻址
(3)寄存器寻址
(4)寄存器间接寻址
(5)寄存器相对
(6)寄存器相对寻址
(7)基址变址寻址
(8)相对基址变址寻址
3-1
(1)MOVSI,BYTEPTR250或者MOVAL,BYTEPTR250
(2)DX与CL类型不匹配
(3)堆栈的操作“后进先出”
(4)MOVBX,OFFSET[SI]汇编时并不知道指令在执行时SI等于什么,所以是错误的
(5)结果是0
(6)目的操作数
(7)大写=小写ANDDFH;
D5位清0
小写=大写OR20H;
D5位置1
大/小写=小/大写XOR20H;
D5位求反
(8)利用CF和OF结果判断
(9)DX.AX
(10)逻辑与运算规则类似于二进制的乘法。
3-2
(1)×
,因为MOV指令不影响标志位
,空操作指令NOP(=XCHGAX,AX)
,堆栈是利用主存实现的,MOVBX,[BP+4]也是对的
(6)×
,ADD指令影响6个状态标志位,而INC指令不影响进位CF标志,影响其他状态标志位。
,有符号数进行符号扩展,位数加长一倍,数值不变
(8)×
,CMP指令不保存结果
,NOT指令不影响标志位
(10)×
,无符号数SHL指令左移一位,就是乘2
3-3
(1)减少(-2)
(2)DX,(SP)=(SP)+2
(3)
(4)26H,PF=0,0BE26H,PF=0
(5)0FF68H,SF=1
(6)0FF98H
(7)0000H
(8)0,0,0
(9)01234678H
(10)CL,4
3-4
(1)MOVAX,100
(2)MOVBYTEPTRVAR,100
(3)MOVAX,BX
(4)MOVBYTEPTRVAR,AL
(5)MOVDS,AX
(6)MOVAX,WORDPTRVAR
(7)MOVDS,WORDPTRVAR
(8)MOVAX,DS
(9)MOVWORDPTRVAR,DS
3-5
(1)类型不匹配
(2)IP自动赋值
(3)段寄存器不能直接赋值
(4)段寄存器之间不能直接赋值
(5)类型不匹配
(6)目的操作数没有指明数据类型
(7)MOVAX,[BX+DI]
(8)MOV指令中目的操作数不能为立即数
3-6
MOVAX,BX
MOVBX,WORDPTR[DI]
MOVWORDPTR[DI],AX
3-7
后进先出的主存结构,入栈指令:
PUSH,出栈指令:
POP
3-8
SP=4302H
3-9
执行结果:
AL=12H
如果不用XLAT指令,则用MOVAL,BYTEPTR[BX+AL]指令替换XLAT指令
3-10
P75-76或者见课件
3-11
(1)
movax,80h;
AX=80h
addax,3;
AX=83h,CF=0,SF=0
addax,80h;
AX=103h,CF=0,OF=0
adcax,3;
AX=106h,CF=0,ZF=0
(2)
movax,100;
AX=100
addax,200;
AX=300,CF=0
addal,200;
AX=002Ch,CF=1注:
100+200=64h+0C8h=[1]2Ch
(4)
moval,7fh;
AL=7fh
subal,8;
AL=77h,CF=0,SF=0
subal,80h;
AL=0f7h,CF=1,SF=1
sbbal,3;
AL=0f3h,CF=0,SF=0
3-12
指令
AL
CF
ZF
SF
OF
PF
moval,89h
89h
不变
addal,al
12h
1
addal,9dh
0afh
cmpal,0bch(不保存结果)
subal,al
00h
decal(不影响CF)
0ffh
incal(不影响CF)
3-13
(1)DX=11H,AX=0F00H
(2)DX=00FFH,AX=0E000H
3-14
(1)ADDDX,BX
(2)ADDAL,BYTEPTR[BX+SI]
(3)ADDWORDPTR[BX+0B2H],CX
(4)ADDWORDPTRVAR,3421H
(5)ADDAX,0A0H
3-15
数据段
buffer1DD12345678h
buffer2DD56781234h
代码段
MOVAX,WORDPTRbuffer1
MOVDX,WORDPTRbuffer1+2
SUBAX,WORDPTRbuffer2
SBBDX,WORDPTRbuffer2+2
3-16
movsi,10011100b;
SI=9Ch
andsi,80h;
SI=80h
orsi,7fh;
SI=0FFh
xorsi,0feh;
SI=01h
movax,1010b;
AX=00001010B
movcl,2
shrax,cl;
AX=00000010B,CF=1
shrax,1;
AX=00000100B,CF=0
andax,3;
AX=00000000B,CF=0
movax,1011b;
AX=00001011B
rolax,cl;
AX=00101100B,CF=0
rolax,1;
AX=00010110B,CF=0
orax,3;
AX=00010111B,CF=0
xorax,ax;
AX=0,CF=0,OF=0,ZF=1,SF=0,PF=1
3-17
AX
movax,1470h
1470h
andax,ax
orax,ax
xorax,ax
0000h
notax(不影响标志位)
0ffffh
testax,0f0f0h(不保存结果)
3-18
AND复位某些位(同0与),不影响其他(同1与)
OR置位某些位(同1或),不影响其他(同0或)
XOR求反某些位(同1异或),不影响其他(同0异或)
andbl,11110110b;
BL中D0和D3清0,其余位不变
orbl,00001001b;
BL中D0和D3置1,其余位不变
xorbl,00001001b;
BL中D0和D3求反,其余位不变
3-19
bcddb92h
asciidb?
?
;
moval,bcd
andal,0fh
oral,30h
movascii,al
movah,bcd
movcl,4
shrah,cl
orah,30h
movascii+1,ah
3-20
运算公式:
(VAR1*VAR2+VAR3-540)/VAR4
运算结果:
商存放在AX中,余数存放在DX中
3-21
X=7
等效乘法指令如下:
MOVX,7
IMULX
3-22
MOVSI,AX
MOVCL,4
SHLSI,CL
MOVBX,AX
SHLBX,1
ADDAX,SI
ADDAX,BX
3-23
numdb6,7,7,8,3,0,0,0;
被转换数字
tabdb'
67783000'
;
代码表
movcx,lengthofnum;
CX=8
movsi,offsetnum;
SI=num的偏移地址,指向被转换的地址表
movdi,offsettab;
DI=tab的偏移地址,指向代码表
again:
movdl,[si];
DL=被转换的数字
xchgdl,[di];
DL=转换的代码
mov[si],dl;
转换后的代码置于被转换数字的地址中
movah,2
int21h;
显示DL中的字符=转换的代码
incsi;
指向下一个被转换数字的地址
incdi;
指向下一个代码的地址
loopagain;
循环
运行结果:
显示6783000
替换寄存器相对寻址,其代码如下:
movsi,0;
初始化num的偏移首地址
movdi,0;
初始化tab的偏移首地址
movdl,num[si];
xchgdl,tab[di];
movnum[si],dl;
3-24
大写字母转换为小写字母,显示welldone
修改成BX寄存器相对寻址,其代码如下:
msgdb'
WELCOME'
'
$'
movcx,(lengthofmsg)-1
xorbx,bx
moval,msg[bx]
addal,20h
movmsg[bx],al
incbx
loopagain
movdx,offsetmsg
movah,9
int21h
3-25
movarray2[bx],ax
addbx,2
4-4
MOVAX,var1
MOVBX,6
MULBX;
(DX,AX)←var1*6
MOVBX,var2
SUBBX,7;
BX←var2-7
DIVBX;
AX←(var1*6)/(var2-7)
ADDAX,var3;
AX←(var1*6)/(var2-7)+var3
MOVvar4,AX;
var4←(var1*6)/(var2-7)+var3
随堂测试
设x,y,z,v均为16位带符号数,分别装在X,Y,Z,V存储单元中,编写指令代码段,实现(v-(x*y+z-540))/x运算公式,商存储在W存储单元中,余数在W+2存储单元中。
答案:
MOVAX,X
IMULY;
(DX,AX)←x*y
MOVCX,AX
MOVBX,DX;
(BX,CX)←x*y
MOVAX,Z
CWD;
(DX,AX)←z扩展成32位
ADDCX,AX
ADCBX,DX;
(BX,CX)←x*y+z
SUBCX,540
SBBBX,0;
(BX,CX)←x*y+z-540
MOVAX,V
(DX,AX)←v扩展成32位
SUBAX,CX
SBBDX,BX;
(DX,AX)←v-(x*y+z-540)
IDIVX;
v-(x*y+z-540),AX←商,DX←余数
MOVW,AX;
W←商
MOVW+2,DX;
W+2←余数
4-10
(1)CMPDX,DI
JAabove
(2)CMPBX,SI
JGgreater
(3)CMPBX,0
JEzero
(4)CMPBX,SI
JOoverflow
(5)CMPSI,BX
JLEless_eq
(6)CMPDI,DX
JBEbelow_eq
4-13
思路:
(1)BX←AX,BX逻辑左移1位,将AX的符号位移入CF;
(2)RCLDX,1将AX的符号位移入DX;
(3)重复
(1)~
(2)16次。
MOVCX,16
SHLBX,1
RCLDX,1
LOOPagain
或者3.20题目思想:
MOVDX,AX
MOVCL,15
SARDX,CL
4-18
思路同4-13:
MOVCX,3
SHLAX,1
4-15编程:
先提示输入数字“InputNumber:
0~9”,然后在下一行显示输入的数字,结束;
如果不是键入了0~9数字,就提示错误“Error!
”,继续等待输入数字。
DATASEGMENT
inputstringdb'
InputNumber:
0~9'
13,10,'
errorstringdb'
Error!
'
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETinputstring
MOVAH,09H
INT21H
INPUT:
MOVAH,07H;
键盘输入字符到AL,无回显
CMPAL,'
0'
小于0,转移,显示'
JBERROR
9'
大于9,转移,显示'
JAERROR
MOVDL,AL;
0~9数字,回显/输出到屏幕
MOVAH,02H
JMPEXIT
ERROR:
MOVDX,OFFSETerrorstring;
输出'
Erro
JMPINPUT
EXIT:
MOVAH,4CH
CODEENDS
ENDSTART
4-26以MOV指令为例,说明串操作指令的寻址特点,并用MOV和ADD等指令实现MOVSW的功能(假设DF=0)。
srcmsgDB'
srcstring='
srcstringDB'
helloeverybody!
srcendDB'
stringlengthEQU(lengthofsrcstring)/2
dstmsgDB'
dststring='
dststringDBstringlengthdup(?
),'
DATA,CS:
MOVES,AX
MOVDX,OFFSETsrcmsg
MOVDX,OFFSETsrcstring
MOVCX,stringlen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课后 答案