汇编语言检测点答案.docx
- 文档编号:17263254
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:21
- 大小:21.91KB
汇编语言检测点答案.docx
《汇编语言检测点答案.docx》由会员分享,可在线阅读,更多相关《汇编语言检测点答案.docx(21页珍藏版)》请在冰点文库上搜索。
汇编语言检测点答案
汇编语言检测点答案
【篇一:
汇编语言习题答案】
1个cpu的寻址能力为8kb,那么它的地址总线的宽度为13位。
(2)1kb的存储器有1024个存储单元,存储单元的编号从0到1023。
(3)1kb的存储器可以存储8192(2^13)个bit,1024个byte。
(4)1gb是1073741824(2^30)个byte、1mb是1048576(2^20)个byte、1kb是1024(2^10)个byte。
(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:
64(kb)、1(mb)、16(mb)、4(gb)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。
则它们一次可以传送的数据为(b)、(b)、(b)、(b)、(b)。
(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。
(8)在存储器中,数据和程序以二进制形式存放。
解题过程:
(1)1kb=1024b,8kb=1024b*8=2^n,n=13。
(2)存储器的容量是以字节为最小单位来计算的,1kb=1024b。
(3)8bit=1byte,1024byte=1kb(1kb=1024b=1024b*8bit)。
(4)1gb=1073741824b(即2^30)1mb=1048576b(即2^20)1kb=1024b(即2^10)。
(5)一个cpu有n根地址线,则可以说这个cpu的地址总线的宽度为n。
这样的cpu最多可以寻找2的n次方个内存单元。
(一个内存单元=1byte)。
(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。
(7)8086的数据总线宽度为16根(即一次传送的数据为2b)1024b/2b=512,同理1024b/4b=256。
(8)在存储器中指令和数据没有任何区别,都是二进制信息。
检测点2.1
(1)写出每条汇编指令执行后相关寄存器中的值。
movax,62627ax=f4a3h
movah,31hax=31a3h
moval,23hax=3123h
addax,axax=6246h
movbx,826chbx=826ch
movcx,axcx=6246h
movax,bxax=826ch
addax,bxax=04d8h
moval,bhax=0482h
movah,blax=6c82h
addah,ahax=d882h
addal,6ax=d888h
addal,alax=d810h
movax,cxax=6246h
microsoft(r)windowsdos
(c)copyrightmicrosoftcorp1990-2001.
c:
\docume~1\admini~1debug
-a
0c1c:
0100movax,f4a3
0c1c:
0103movah,31
0c1c:
0105moval,23
0c1c:
0107addax,ax
0c1c:
0109movbx,826c
0c1c:
010cmovcx,ax
0c1c:
010emovax,bx
0c1c:
0110addax,bx
0c1c:
0112moval,bh
0c1c:
0114movah,bl
0c1c:
0116addah,ah
0c1c:
0118addal,6
0c1c:
011aaddal,al
0c1c:
011cmovax,cx
0c1c:
011e
-r
ax=0000bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0100nvupeiplnznaponc
0c1c:
0100b8a3f4movax,f4a3
-t
ax=f4a3bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0103nvupeiplnznaponc
0c1c:
0103b431movah,31
-t
ax=31a3bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0105nvupeiplnznaponc
0c1c:
0105b023moval,23
-t
ax=3123bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0107nvupeiplnznaponc
0c1c:
010701c0addax,ax
-t
ax=6246bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0109nvupeiplnznaponc
0c1c:
0109bb6c82movbx,826c
-t
ax=6246bx=826ccx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=010cnvupeiplnznaponc
0c1c:
010c89c1movcx,ax
-t
ax=6246bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=010envupeiplnznaponc
0c1c:
010e89d8movax,bx
-t
ax=826cbx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0110nvupeiplnznaponc
0c1c:
011001d8addax,bx
-t
ax=04d8bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0112ovupeiplnzacpecy
0c1c:
011288f8moval,bh
-t
ax=0482bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0114ovupeiplnzacpecy
0c1c:
011488dcmovah,bl
-t
ax=6c82bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0116ovupeiplnzacpecy
0c1c:
011600e4addah,ah
-t
ax=d882bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
0c1c:
01180406addal,06
-t
ax=d888bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011anvupeingnznapenc0c1c:
011a00c0addal,al
-t
ax=d810bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011covupeiplnzacpocy
0c1c:
011c89c8movax,cx
-t
ax=6246bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011eovupeiplnzacpocy
0c1c:
011e0b0corcx,[si]ds:
0000=20cd
-q
检测点2.1
(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
movax,2ax=2
addax,axax=4
addax,axax=8
addax,axax=16
microsoft(r)windowsdos
(c)copyrightmicrosoftcorp1990-2001.
c:
\docume~1\admini~1debug
-a
0c1c:
0100movax,2
0c1c:
0103addax,ax
0c1c:
0105addax,ax
0c1c:
0107addax,ax
0c1c:
0109
-r
ax=0000bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
0c1c:
0100b80200movax,0002
-t
ax=0002bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0103nvupeiplnznaponc
0c1c:
010301c0addax,ax
-t
ax=0004bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0105nvupeiplnznaponc
0c1c:
010501c0addax,ax
-t
ax=0008bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0107nvupeiplnznaponc
0c1c:
010701c0addax,ax
-t
ax=0010bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0109nvupeiplnzacponc
0c1c:
010920881615and[bx+si+1516],clds:
1516=00
-q
检测点2.2
(1)给定段地址为0001h,仅通过变化偏移地址寻址,cpu的寻址范围为到。
解题过程:
物理地址=sa*16+ea
ea的变化范围为0h~ffffh
物理地址范围为(sa*16+0h)~(sa*16+ffffh)
现在sa=0001h,那么寻址范围为
(0001h*16+0h)~(0001h*16+ffffh)
=0010h~1000fh
检测点2.2
(2)有一数据存放在内存20000h单元中,现给定段地址为sa,若想用偏移地址寻到此单元。
则sa应满足的条件是:
最小为1001h,最大为2000h。
当段地址给定为1001h以下和2000h以上,cpu无论怎么变化偏移地址都无法寻到20000h单元。
【篇二:
汇编语言实验答案(王爽)】
1.1(第8页)
(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)二进制
注意:
1.第4题中的符号^指求幂运算(如:
2^30指2的30次方)
检测点2.1(第18页)
----------------------
(1)写出每条汇编指令执行后相关寄存器中的值。
第一空:
f4a3h
第二空:
31a3h
第三空:
3123h
第四空:
6246h
第五空:
826ch
第六空:
6246h
第七空:
826ch
第八空:
04d8h
第九空:
0482h
第十空:
6c82h
第十一空:
d882h
第十二空:
d888h
第十三空:
d810h
第十四空:
6246h
(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
解答如下:
movax,2
addax,ax
addax,ax
addax,ax
检测点2.2(第23页)
----------------------
(1)00010h,1000fh
(2)1001h,2000h
第2题说明:
因为段的起始地址要为16的倍数。
所以当段地址小于1001h或大于2000h时cpu都无法寻到。
检测点2.3(第33页)
答:
cpu修改了4次ip的值。
情况如下:
第1次:
执行完movax,bx后
第2次:
执行完subax,ax后
第3次:
读入jmpax后
第4次:
执行完jmpax后
最后ip的值为0
实验1查看cpu和内存,用机器指令和汇编指令编程(第33页)
-----------------------------------------------------
1.预备知识:
debug的使用
此部分略
2.实验任务(第43页)
(1)
此部分略
(2)
此部分略
(3)
通过debug中的d命令查看到主板的生产日期[以月、日、年,分隔符为/的格式]存储在内存ffff:
0005~ffff:
000c(共8个字节单元中)处。
此生产日期不能被改变,因为其具有‘只读’属性。
(4)
通过向内存中的显存写入数据,使计算机根据写入的数据进行ascii转换,并将转换后且可打印的字符输出到屏幕上。
注:
关于显存的详细讨论不在此题范围
检测点3.1(第52页)-
(1)(题目:
略)
第一空:
2662h
第二空:
e626h
第三空:
e626h
第四空:
2662h
第五空:
d6e6h
第六空:
fd48h
第七空:
2c14h
第八空:
0000h
第九空:
00e6h
第十空:
0000h
第十一空:
0026h
第十二空:
000ch
提示:
此题可在debug中利用e命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用a命令进行写入(题目中所给出的)相应的汇编指令,最后再进行t命令进行逐步执行,以查看相应结果。
(2)
1.指令序列如下:
movax,6622h
jmp0ff0:
0100
movax,2000h
movds,ax
movax,[0008]
movax,[0002]
2.写出cpu执行每条指令后,cs、ip和相关寄存器中的数值。
指令序列↓寄存器→csipdsaxbx
初始值→2000h00001000h00
movax,6622h2000h00031000h6622h0000
jmp0ff0:
01001000h00001000h6622h0000
movax,2000h1000h00031000h2000h0000
movds,ax1000h00052000h2000h0000
movax,[0008]1000h00082000hc389h0000
movax,[0002]1000h000b2000hea66h0000
3.再次体会:
数据和程序有区别吗?
如何确定内存中的信息哪些是数据,哪些是程序?
答:
(略)
检测点3.2(第66页)
(1)
movax,2000h
movss,ax
movsp,10h
(2)
movax,1000h
movss,ax
movsp,0h
实验2用机器指令和汇编指令编程(第70页)
1.预备知识:
debug的使用
此部分略
2.实验任务
(1)使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
从第一空开始依次如下:
ax=5bea
ax=5cca
bx=30f0
bx=6029
sp=fe220fe5cca
sp=fc220fc6029
sp=fe6029
sp=100h5cca
sp=fe220fe30f0
sp=fc220fc2e39
说明:
此题可能因机子软、硬件环境不同而导致答案不一致!
(2)仔细观察图3.19的实验过程,然后分析:
为什么2000:
0~2000:
f中的内容会发生改变?
答:
因为用t指令进行调试时,会产生中断。
而为了保护现场,cpu则先将标志寄存器进栈、再把当前cs的值进栈,最后将ip的值进栈。
关于中断的详细内容的讨论不在此题范
围
实验4[bx]和loop的使用(第113页)
(1)编程,向内存0:
200~0:
23f依次传送数据0~63(3fh)。
程序如下:
assumecs:
codesg
codesgsegment
movax,0020h
movds,ax
movbx,0
movdl,0
movcx,40h
s:
mov[bx],dl
incdl
incbx
loops
movax,4c00h
int21h
codesgends
end
(2)编程,向内存0:
200~0:
23f依次传送数据0~63(3fh),程序中只能使用9条指令,9条指令中包括“movax,4c00h”和“int21h”。
程序如下:
assumecs:
codesg
codesgsegment
movax,0020h
movds,ax
movbl,0
movcx,40h
s:
mov[bx],bl
incbl
loops
movax,4c00h
int21h
codesgends
end
(3)下面的程序的功能是将“movax,4c00h”之前的指令复制到内存0:
200处,补全程序。
上机调试,跟踪运行结果。
assumecs:
code
codesegment
movax,code;code为所填写的数据
movds,ax
movax,0020h
moves,ax
movbx,0
movcx,18h;18h为所填写的数据
s:
moval,[bx]
moves:
[bx],al
incbx
loops
movax,4c00h
int21h
codeends
end
提示:
1.因为题目的要求是把代码段内的指令当作数据,复制到目的地址。
所以,源数据段ds和代码段cs相同,通过movax,code/movds,ax(/符号是指两条指令的分隔)来设置源数据段。
2.可以先假设要复制8位[1h~0ffh]数据(因为我们肉眼就可以看出此程序的长度不可能大于0ffh个字节)的字节数(如:
10h),把程序补全,以便通过编译。
这时我们以准确的第一空所填内容code与假想的第二空内容10h将程序补充完整并将其编译、连接、运行,接着进行debug,在debug时我们可用r命令查看cx的值,这时我们可以看到cx的值为1d,由此我们可以算出该程序的长度[1dh-5h]=18h,之所以减5是为了满足题目的要求(因为movax,4c00h/int21h这两条指令的长度等于5)
检测点6.1(第119页)
(1)
assumecs:
codesg
codesgsegment
dw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start:
movax,0
movds,ax
movbx,0
movcx,8
s:
movax,[bx]
movcs:
[bx],ax;此条指令为所填指令
addbx,2
loops
movax,4c00h
int21h
codesgends
endstart
(2)assumecs:
codesg
codesgsegment
dw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw0,0,0,0,0
start:
movax,cs;cs为所填第一空
movss,ax
movsp,1ah;此条指令为所填第二空
movax,0
【篇三:
《汇编语言》习题及解答】
xt>
(1)1个cpu的寻址能力为8kb,那么它的地址总线的宽度为13位。
(2)1kb的存储器有1024个存储单元,存储单元的编号从0到1023。
(3)1kb的存储器可以存储8192(2^13)个bit,1024个byte。
(4)1gb是1073741824(2^30)个byte、1mb是1048576(2^20)个byte、1kb是1024(2^10)个byte。
(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:
64(kb)、1(mb)、16(mb)、4(gb)。
(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。
则它们一次可以传送的数据为:
1(b)、1(b)、2(b)、2(b)、4(b)。
(7)从内存中读取10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 检测 答案