汇编语言王爽检测点答案.docx
- 文档编号:11193238
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:49
- 大小:25.58KB
汇编语言王爽检测点答案.docx
《汇编语言王爽检测点答案.docx》由会员分享,可在线阅读,更多相关《汇编语言王爽检测点答案.docx(49页珍藏版)》请在冰豆网上搜索。
汇编语言王爽检测点答案
汇编语言王爽.检测点答案
第一章.检测点1.1
(1)13
(2)1024,0,1023
(3)8192,1024
(4)2^30,2^20,2^10
(5)64,1,16,4
(6)1,1,2,2,4
(7)512,256
(8)二进制
注:
符号'^'指求幂运算(如:
2^30指2的30次方)
第二章
检测点2.1
(1)大家做这题的时候一定要注意,要看清楚数制,比如是二进制还是十进制,还是十六进,我当时没注意,做错了!
!
呵呵!
!
第一空:
F4A3H
第二空:
31A3H
第三空:
3123H
第四空:
6246H
第五空:
826CH
第六空:
6246H
第七空:
826CH
第八空:
04D8H
第九空:
0482H
第十空:
6C82H
第十一空:
D882H
第十二空:
D888H
第十三空:
D810H
第十四空:
6246H
(2)
movax,2
addax,ax
addax,ax
addax,ax
检测点2.2
(1)00010H1000fH
(2)0001H2000H
检测点2.3
共修改了4次ip第一次movax,bx第二次是subax,ax第三次是jmpax第四次是执行jmpax最后ip的值是0因为ax的值是零!
!
检测点3.1
(1)
第一空:
2662H
第二空:
E626H
第三空:
E626H
第四空:
2662H
第五空:
D6E6H
第六空:
FD48H
第七空:
2C14H
第八空:
0000H
第九空:
00E6H
第十空:
0000H
第十一空:
0026H
第十二空:
000CH
注意:
ax中存取的是字型数据,高地址存放高字节,低地址存放低字节!
!
(一定要小心)
(2)
①写出cpu的执行序列
Movax,6622
Jmp0ff0:
0100
Movax,2000H
Movds,ax
Movax,[0008]
Movax,[0002]
②
指令执行顺序
寄存器
CS
IP
DS
AX
BX
初值
2000H
0000
1000H
0
0
movax,6622h
2000H
0003
1000H
6622H
0000
jmp0ff0:
0100
1000h
0000
1000H
6622H
0000
movax,2000h
1000H
0003
1000H
2000H
0000
movds,ax
1000H
0005
2000H
2000H
0000
movax,[0008]
1000H
0008
2000H
C389H
0000
movax,[0002]
1000H
000B
2000H
EA66H
0000
③数据和程序在计算机中都是以二进制的形式存放的,在区别程序和数据时,关键是看段地址,如果段地址是ds段,说明该内存中存放的是数据,如果段地址是cs段,说明该内存中存放的是程序指令
检测点3.2
(1)
Movax,2000H
Movss,ax
Movsp,0010H
(2)
Movax,1000H
Movss,ax
Movsp,0000H
注意:
出栈时和入栈时的顺序,空栈时栈顶指向的是最高端地址!
栈满是栈顶指针指向的是最底端地址!
!
2。
实验任务
(1)
5BEA
5CCA
30F0
6023
00FE2200:
01005CCA
00FC2200:
00FE6023
00FE6023
01005CCA
00FE2200:
010030F0
00FC22000:
00FC2E39
(2)
因为在DEBUG中T命令在执行修改寄存器ss的指令时,会产生中断,将现场保护起来,下一条指令也紧接着被执行!
!
实验三:
该实验自己做吧我做出来的东西只是我pc上的数据,可能在别的pc做出来的结果会不一样,在加之数据太多,我做了两次数据都没有完整的记下来,只好作罢!
!
实验四:
[bx]和loop的使用
(1)
assumecs:
code
codesegment
movax,0
movds,ax
movcx,64
movbx,200h
s:
movds:
[bx],ax
incbx
incax
loops
movax,4c00H
int21h
codeends
End
(2)如上题我一不小心写出来就是九条指令了!
!
!
呵呵!
!
(3)具体做法是将那段指令写道内存中,察看其在内存中的起始地址和终止地址,然后将该内存的内容复制到0:
200处就可以了!
!
检测点6.1
(1)
Movcs:
[dx],ax
(2)
第一空:
cs
第二空:
26或者1ah
第三空:
popcs:
[dx]
发表于@2008年08月19日 01:
11:
00|评论
(2)|编辑|举报|收藏
旧一篇:
常用命令(转)|新一篇:
实验五:
编写、调试具有多个段的程序
Copyright©maokaijiang
PoweredbyCSDNBlog
十一川藏疯狂之旅
本文来自CSDN博客,转载请标明出处:
王爽汇编语言答案(本答案是自己做的所有题目已在deubg中调试;但难免有差错,发现的提醒我email:
maokaijiang1211@谢谢)
(1)
①1931(一直保持不变,由于pc不同答案有可能不一样)
②cs=1943ss=1941ds=1931(由于pc不同,所以答案也可能不同,这只是机子上的数据)
③第一空:
X—2
第二空:
X—1
(2)
1.一直不变
2.答案不一样,就不写了
3.X-2,X-1
4.(N/16+1)*16
(3)
1.一直不变
2.答案不一样
3.X+3,X+4
(4)
答:
可能执行,如果不指明标号,cpu顺序执行指令,所有可能正确执行!
!
!
!
(5)
;******************************************
;将a段和b段指的数据依次相加,将结果保存到c段中
;*******************************************
assumecs:
code
asegment
db1,2,3,4,5,6,7,8
aends
bsegment
db1,2,3,4,5,6,7,8
bends
dsegment
db8dup(0)
dends
;*********************************
;代码段
;*********************************
codesegment
start:
movax,d
moves,ax
movax,a
movds,ax
movcx,8
movax,0
movbx,0
again1:
movdx,ds:
[bx]
moves:
[ax],dx
incbx
incax
loopagain1
movax,b
movds,ax
movax,0
movbx,0
movcx,8
movdx,0
again2:
adddx,ds:
[bx]
moves:
[ax],dx
incax
incbx
loopagain2
movax,4c00h
int21h
codeends
endstart
(6)
;*****************************************************
;编写程序,用push指令将a段中的word数据,逆序存储到b段中
;******************************************************
assumecs:
code
asegment
dw1,2,3,4,5,6,7,8
aends
bsegment
dw0,0,0,0,0,0,0,0
bends
codesegment
start:
movax,b
movss,ax
movsp,10h
movax,a
movds,ax
movbx,0
movcx,8
s:
push[bx]
addbx,2
loops
movax,4c00h
int21h
codeends
endstart
本文来自CSDN博客,转载请标明出处:
ht
(1)
本题略!
!
!
(2)
;*****************************************************
;编程,将datasg段中的每个单词的前四个字母改写为大写字母
;******************************************************
assumecs:
codesg,ss:
stacksg,ds:
datasg
stacksgsegment
dw0,0,0,0,0,0,0,0
stacksgends
datasgsegment
db'1.displsy'
db'2.brows'
db'3.replace'
db'4.modify'
datasgsegment
codesgsegment
start:
movax,stacksg
movss,ax
movsp,16
movax,datasg
movds,ax
movdx,0
movcx,4
s0:
pushcx
movsi,0
movcx,4
s1:
moval,[bx+si+4]
addal,11011111B
mov[bx+si+4],al
incsi
loops1
adddx,16
popcx
loops0
movax,4c00h
int21h
codesgends
endstart
本文来自CSDN博客,转载请标明出处:
assumecs:
codesg,ds:
data,es:
table
datasegment
db'1975','1976','1977','1978','1979','1980','1981','1982','1983'
db'1984','1985','1986','1987','1988','1989','1990','1991','1992'
db'1993','1994','1995'
;以上是表示21年的21个字符串
dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收的21个dword型数据
dw3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw11542,14430,45257,17800
;以上是表示21年公司雇员人数的21个word型数据
dataends
tablesegment
db21dup('yearsummne?
?
')
tableends
codesgsegment
start:
movax,data
movds,ax
movax,table
moves,ax
movcx,21
movbx,0
movsi,0
movdi,0
s0:
;**************************************
;把年份送到table中
;**************************************
moval,[bx]
moves:
[di],al
moval,[bx+1]
moves:
[di+1],al
moval,[bx+2]
moves:
[di+2],al
moval,[bx+3]
moves:
[di+3],al
;********************************************
;把收入送到table中
;********************************************
movax,54h[bx]
movdx,56h[bx]
moves:
5h[di],ax
moves:
7h[di],dx
;**************************************
;把人数送到table中
;**************************************
movax,0A8h[si]
moves:
0Ah[di],ax
;**************************************
;计算人均收入并把其送到table中
;*****************************************
movax,54h[bx]
divwordptr0A8h[si]
moves:
0Ch[di],ax
addsi,2
adddi,16
adddx,4
loops0;循环21次
movax,4c00h
int21h
codesgends
endstart
本文来自CSDN博客,转载请标明出处:
第九章收藏
检测点9.1
(1)程序如下:
assumecs:
code
datasegment
db0,0,0,0,0,0,0,0
dataends
codesegment
start:
movax,data
movds,ax
movbx,0
jmpwordptr[bx+1]
movax,4c00h
int21h
codeends
endsstart
理由是:
要是jmp跳转后执行第一条指令,本条指令是wordptr是段内转移必须满足ip=0所以ds:
[bx+1]的值必须为零,也就是data段的第二个数据必须为零
(2)第一空:
bx
第二空:
cs
(3)本题可以先用debug将内存2000:
1000中的内容写为BE000600.....然后再调试可得到
cs=0006hip=00BEh
检测点9.2
;*****************************************
;实现在内存2000H段中查找第一个值为零的字节,
;找到后,将它的偏移地址存储到dx中
;******************************************
assumecs:
code
codesegment
start:
movax,2000H
movds,ax
movbx,0
s:
movcl,[bx]
movch,0
jcxzok
incbx
jmpshorts
ok:
movdx,bx
movax,4c00h
int21h
codeends
endstart
注:
利用jcxz判断cx是否等于零来发生跳转,注意判断的是一个字节!
!
检测点9.3
;************************************************************
;利用loop指令,实现在内存2000H段中查找第一个值为零的byte,找到后
;将它的偏移地址存储到dx中
;*************************************************************
assumecs:
code
codesegment
start:
movax,2000H
movds,ax
movbx,0
s:
movcl,[bx]
movch,0
jmpok
incbx
loops
ok:
decbx
movdx,bx
movax,4c00h
int21h
codeends
endstart
实验八:
assumecs:
codesg
codesgsegment
movax,4c00h
int21h
start:
movax,0
s:
nop
nop
movdi,offsets
movsi,offsets2
movax,cs:
[si]
movcs:
[di],ax
s0:
jmpshorts
s1:
movax,0
int21h
movax,0
s2:
jmpshorts1
nop
codesgends
endstart
注:
程序可以正常运行,本程序主要考察了转移指令的使用!
!
!
实验九:
;****************************************************************************
;编程:
在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'welcometomasm!
'.
;实验原理见书中186页
;****************************************************************************
assumecs:
code,ds:
data,es:
display,ss:
stack
datasegment
db'welcometomasm!
'
db02H,24H,71H
dataends
stacksegment
db16dup(0)
stackends
displaysegment
db1024dup(0)
displayends
codesegment
start:
movax,data
movds,ax
movsi,0
movax,0b872H;定义12行中间的起始位置
moves,ax
movcx,3
movdi,0
;*****************************
;做三次外循环,每次显示一种颜色
;******************************
s0:
pushcx
pushax
movcx,16
movbx,0
;*********************************************
;做上六次内循环,将数据段定义的字符串写入内存中
;*********************************************
s:
moval,[bx]
moves:
[si],al
moval,[di+10h]
moves:
[si+1],al
addsi,2
incbx
loops
subsi,32;将si回到初始位置
addsi,160;换行
popax
popcx
incdi;改变颜色
loops0
movax,4c00h
int21h
codeends
endstart
本文来自CSDN博客,转载请标明出处:
第十章收藏
检测点10.1
第一空:
1000
第二空:
0000
检测点10.2
ax=6
注意:
执行calls是ip的值为6接着进栈,然后执行popax相当于把ip的值放到ax中!
!
检测点10.3
ax=1100H
注意:
执行callfarptrs后cs=1000ip=3(10H)接着进栈然后执行popax此时ax=3
==〉addax,ax此时ax=6(100H)==〉popbx此时bx=1000==〉addax,bx此时ax=1100H
检测点10.4
ax=000B具体我就不一一分析了,呵呵!
!
检测点10.5
(1)
ax=3
(1)ax=1bx=0
实验十:
编写子程序
(1)显示字符串
;*******************************************************************
;显示字符串的子程序(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)
;(cl)=颜色,ds:
si指向字符串的首地址
;********************************************************************
assumecs:
code,ds:
data,es:
display,ss:
stack
datasegment
db'welcometomasm!
',0
dataends
stacksegment
db8dup(0)
stackends
displaysegment
db1024dup(0)
displayends
codesegment
start:
movdh,8
movdl,3
movcl,2
movax,data
movds,ax
movsi,0
callshow_str
movax,4c00h
int21h
;*****************************************
;显示字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 检测 答案