汇编语言第2版王爽著课后实验报告详解Word文件下载.docx
《汇编语言第2版王爽著课后实验报告详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言第2版王爽著课后实验报告详解Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
(按实验结果填空)
Movax,ffff
Movds,ax
Movax,2200
Movss,ax
Movsp,0100
Movax,[0];
ax=5BEA
Addax,[2];
ax=5CCA
Movbx,[4];
bx=30F0
Addbx,[6];
bx=6026
Pushax;
sp=00FE;
修改的内存单元的地址是2200:
00FE内容是5CCA
Pushbx;
sp=00FC;
00FC内容是6026
Popax;
ax=6026.
Popbx;
sp=0100;
bx=.5CCA
Push[4];
00FE内容是30F0
Push[6];
修改的内存单元的地址是2200:
00FC内容是2F36
实验截图如下:
实验2-2(分析问答实验)
答:
因为T命令是单步中断,我们在后面学习后知道,CPU执行中断时会保留现场,即将标志寄存器,CS,IP等入栈,而实验中栈的地址正好是要查询的内存地址,所以即便未对内存单元进行写入命令,但里面的值会因为CPU要保留现场自动被改了
实验3
(1)代码:
ASSUMECS:
CODES
CODESSEGMENT
START:
movax,2000h
movss,ax
movsp,0
addsp,10
popax
popbx
pushax
pushbx
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
(2)debug跟踪:
(3)用debug跟踪查看PSP中的内容:
可见PSP的头两个字节是CD20,与书上的一致
实验4-1代码如下:
movax,0
movds,ax
movbx,200h
movcx,64
s:
mov[bx],al
incal
incbx
loops
ENDSTART
实验4-1运行图如下:
实验4-2代码如下:
movax,200h
movbx,0
mov[bx],bx
运行结果同实验4-1的一样
实验4-3(补全代码)
movax,cs
movax,20h
moves,ax
movcx,16h
moval,[bx]
moves:
[bx],al
因为要将代码复制到0:
200处,则必须知道代码的地址,和代码的长度,代码的地址在cs和IP中,代码的长度可以编译后用U命令查看后确定,这个之前随便打一个数就可以,不影响代码的长度,因为那个数占的空间和真实的长度一样,所以用U命令后在改过来即可
实验4-3的运行图如下:
实验5-1代码如下:
DATASSEGMENT
dw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
DATASENDS
STACKSSEGMENT
dw0,0
STACKSENDS
CODES,DS:
DATAS,SS:
STACKS
MOVAX,stacks
MOVss,AX
movsp,16
movax,datas
pushds:
[0]
[2]
popds:
实验5-1运行图如下:
①CPU执行程序后,程序返回前,data段中的数据为多少?
不变如上图
②CPU执行程序后,程序返回前,CS=144Ch,SS=144Bh,DS=144Ah。
③设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1.
实验5-2代码如下:
ASSUMECS:
dw0123h,0456h
MOVsS,AX
实验5-2运行图如下:
④对于如下定义的段:
Namesegment
……
Nameends
如果段中的数据占N个字节,则程序加载后,该段实际占用空间为16N倍。
实验5-3代码如下:
dw0123h,0456h
实验5-3运行图如下:
②CPU执行程序后,程序返回前,CS=144Ch,SS=144Eh,DS=144Dh。
③设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4。
实验5-4:
如果将
(1),
(2),(3)题中的最后一条伪指令“endstart”改为“end”(也就是说,不指明程序的入口),则哪个程序任然可以正确执行?
程序都可以正确执行,因为去掉start后,由于没有的标志,系统会将从code段的起始位置当作程序代码的开始处,然后一直执行下去,而这三个程序在start前没有其他的内容,去掉start也就不影响期功能了
实验5-5代码如下:
CODESSEGMENT
aSEGMENT
db7,8
aENDS
bSEGMENT
db7,8
bENDS
CCSEGMENT
db0,0
CCENDS
MOVAX,a
MOVDS,AX
movsi,0
Movcx,8
addal,[0+si]
addal,[16+si]
Mov[32+si],al
incsi
loops
实验5-5运行图如下:
实验5-6代码如下:
dwah,0bh,0ch,0dh,0eh,0fh,0ffh
aends
movax,b
movcx,8
push[bx]
addbx,2
实验5-6运行图如下:
实验6代码如下:
stacksgSEGMENT
stacksgENDS
datasgSEGMENT
db'
1.display'
1.brows'
1.replace'
1.modifly'
datasgENDS
DATASg,SS:
STACKSg
MOVAX,DATASg
movax,stacksg
movcx,4
s0:
pushcx
movsi,3
moval,[bx+si]
andalb
mov[bx+si],al
addbx,16
popcx
loops0
实验6运行图如下:
实验7代码如下:
Db'
197