汇编语言王爽课后答案Word格式文档下载.docx
- 文档编号:22308639
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:21.73KB
汇编语言王爽课后答案Word格式文档下载.docx
《汇编语言王爽课后答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《汇编语言王爽课后答案Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
1000:
0000
处开始执行指令。
stacksegment
db16dup(0)
stackends
movax,stack
movss,ax
movsp,16
movax,1000h
movax,0
pushax
retf
执行reft指令时,相当于进行:
popip
popcs
cs入栈,再将偏移地址
ip入
根据栈先进后出原则,应先将段地址
栈。
检测点10.3
下面的程序执行后,ax中的数值为多少?
内存地址机器码汇编指令执行后情况
1000:
0b8
0000movax,0ax=0,ip
指向1000:
3
39a
09000010callfarptrs
popcs,popip,ip
9
840incax
958s:
popaxax=8h
addax,axax=10h
popbxbx=1000h
addax,bxax=1010h
用debug进行跟踪确认,“callfarptrs是先”将该指令后的第一个字节段地址cs=1000h入栈,再将偏移地址ip=8h入栈,最后转到标号处执行指令。
出栈时,根据栈先进后出的原则,先出的为ip=8h,后出的为cs=
1000h
检测点10.4
内存地址机器码汇编指令执行后情况
b80600movax,6ax=6,ip
ffd0callaxpopip,ip
6
5
40incax
58movbp,spbp=sp=fffeh
addax,[bp]ax=[6+ds:
(fffeh)]=6+5=0bh
用debug进行跟踪确认,“callax(16位reg)”是先将该指令后的第
一个字节偏移地址ip入栈,再转到偏移地址为ax(16
指令。
检测点10.5
位
reg)
处执行
(1)下面的程序执行后,ax中的数值为多少?
assumecs:
stacksegmentdw8dup(0)stackendscodesegment
callwordptrds:
[0eh]
incax
推算:
执行callwordptrds:
[0eh]指令时,先
最后ip转移到(ds:
[0eh])。
(ds:
[0eh])=11h
cs入栈,再ip=11
,执行incax?
?
入栈,
最终
ax=3
题中特别关照别用debug跟踪,跟踪结果不一定正确,但还是忍
不住去试试,看是什么结果。
根据单步跟踪发现,执行callwordptrds:
[0eh]指令时,显示
ds:
[0eh]=065d。
0000~ds:
0010不是已设置成stack数据段了嘛,不是应该全都是0的嘛。
于是进行了更详细的单步跟踪,发现初始数据段中数据确实为0,但执行完movss,ax;
movsp,16这两条指令后,数据段中数据发生改变。
这是为什么呢?
中断呗~~~~
(2)下面的程序执行后,ax和bx中的数值为多少?
codesg
stacksegmentdw8dup(0)stackendscodesgsegmentstart:
movax,stackmovss,axmovsp,10h
movwordptrss:
[0],offsets;
(ss:
[0])=1ahmovss:
[2],cs;
[2])=cs
calldwordptrss:
[0];
cs入栈,ip=19h入栈,转到cs:
1ah处执行指
令
;
[4])=cs,(ss:
[6])=ip
nop
movax,offsets;
ax=1ah
subax,ss:
[0ch];
ax=1ah-(ss:
[0ch])=1ah-19h=1movbx,cs;
bx=cs=0c5bh
subbx,ss:
[0eh];
bx=cs-cs=0
codesgends
c:
\docume~1\admini~1debugjc10-5.exe
-u
0c5b:
0000b85a0cmovax,0c5a
00038ed0movss,ax
0005bc1000movsp,0010
000836ss:
0009c70600001a00movwordptr[0000],001a0c5b:
000f36ss:
00108c0e0200mov[0002],cs
001436ss:
0015ff1e0000callfar[0000]
001990nop
001ab81a00movax,001a
001d36ss:
001e2b060c00subax,[000c]
00228ccbmovbx,cs
002436ss:
00252b1e0e00subbx,[000e]
0029b8004cmovax,4c00
课程设计一
将实验7中的poweridea公司的数据按照图所示的格式在屏幕上显示现来
tablesegment
db1975,1976,1977,1978,1979,1980,1981,1982,1983db
1984,1985,1986,1987,1988,1989,1990,1991,1992db
1993,1994,1995
dd
16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197
514
345980,590827,803530,1183000,1843000,2795000,3753000,4649
000,5937000dw
3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8
226dw11542,14430,15257,17800
dw
5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,
239dw260,304,333tableends
datasegmentdb32dup(0)dataendscodesegmentstart:
movax,datamovds,ax
movax,tablemoves,axmovbx,0movsi,0
movdi,0
movcx,21
movdh,2
movdl,30
g:
pushcxpushdxmovax,es:
[bx]mov[si],axmovax,es:
[bx].2
mov[si].2,ax;
年份入ds:
si
addsi,6
movax,es:
[bx].84
movdx,es:
[bx].86
calldtoc2;
收入转成十进制字符入ds:
addsi,10
[di].168
movdx,0
人员数转成十进制字符入ds:
x,es:
[di].210
人均收入转成十进制字符入ds:
movsi,0;
设置ds:
si指向需显示字符首地址
b:
movcx,29
pushcxmovcl,[si]
jcxzf;
(ds:
si)=0转到f执行
d:
incsi
popcxloopcincsimoval,0
mov[si],al;
设置结尾符0
si指向需显示字符首地址popdx
movcl,2
callshow_str
addbx,4;
dword数据指向下一数据单元adddi,2;
word数据指向下一数据单元
adddh,1;
指向显存下一行
popcx
loopg
f:
moval,20h
si)=0的数据改成空格
jmpd
名称:
dtoc2
功能:
将dword型数据转变为表示十进制的字符串,字符串以0
为结尾符。
;
参数:
(ax)=dword型数据的低16位;
(dx)=dword型数据的高16位;
si指向字符串首地址。
返回:
无。
dtoc2:
pushbx
pushcx
pushdx
pushsi
pushdi
d20:
movcx,10;
除数为10
calldivdw
addcx,30h;
余数+30h,转为字符
pushcx;
字符入栈
incdi;
记录字符个数
movcx,ax
jcxzd21;
低位商=0时,转到d21检测高位商jmpd20
d21:
movcx,dx
jcxzd22;
高低位商全=0时,转到d22执行
jmpd20
d22:
movcx,di
d23:
popax;
字符出栈
mov[si],al
incsi;
指向下一单元
loopd23
moval,0
popdi
popsi
popdx
popbx
popax
ret
【篇二:
《汇编语言》第二版习题答案(全)王爽编写】
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)从内存中读取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.
\docume~1\admini~1debug
0c1c:
0100movax,f4a3
0103movah,31
0105moval,23
0107addax,ax
0109movbx,826c
010cmovcx,ax
010emovax,bx
0110addax,bx
0112moval,bh
0114movah,bl
0116addah,ah
0118addal,6
011aaddal,al
011cmovax,cx
011e
-r
ax=0000bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0100nvupeiplnznaponc
0100b8a3f4movax,f4a3
-t
ax=f4a3bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0103nvupeiplnznaponc
0103b431movah,31
ax=31a3bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0105nvupeiplnznaponc
0105b023moval,23
ax=3123bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0107nvupeiplnznaponc
010701c0addax,ax
ax=6246bx=0000cx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0109nvupeiplnznaponc
0109bb6c82movbx,826c
ax=6246bx=826ccx=0000dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=010cnvupeiplnznaponc
010c89c1movcx,ax
ax=6246bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=010envupeiplnznaponc
010e89d8movax,bx
ax=826cbx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0110nvupeiplnznaponc
011001d8addax,bx
ax=04d8bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0112ovupeiplnzacpecy
011288f8moval,bh
ax=0482bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0114ovupeiplnzacpecy
011488dcmovah,bl
ax=6c82bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0116ovupeiplnzacpecy
011600e4addah,ah
ax=d882bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=0118ovupeingnzacpenc
01180406addal,06
ax=d888bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011anvupeingnznapenc
011a00c0addal,al
ax=d810bx=826ccx=6246dx=0000sp=ffeebp=0000si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011covupeiplnzacpocy
011c89c8movax,cx
ax=6246bx=826ccx=6246dx=0000sp=ffeebp=0000
si=0000di=0000
ds=0c1ces=0c1css=0c1ccs=0c1cip=011eovupeiplnzac
pocy
011e0b0corcx,[si]ds:
0000=20cd
-q
(2)只能使用目前学过的汇编指令,最多使用
4条指令,编程计算
2
的4次方。
movax,2ax=2
addax,axax=4
addax,axax=8
addax,axax=16
-a
0100movax,2
0103addax,ax
0105addax,ax
0c1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课后 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)