1 / 4
文档名称:

汇编语言-实验7程序加载数据段和代码段,loop.pdf

格式:pdf   大小:456KB   页数:4页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汇编语言-实验7程序加载数据段和代码段,loop.pdf

上传人:小屁孩 2022/12/2 文件大小:456 KB

下载得到文件列表

汇编语言-实验7程序加载数据段和代码段,loop.pdf

文档介绍

文档介绍:该【汇编语言-实验7程序加载数据段和代码段,loop 】是由【小屁孩】上传分享,文档一共【4】页,该文档可以免费在线阅读,需要了解更多关于【汇编语言-实验7程序加载数据段和代码段,loop 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。汇编语⾔-实验7程序加载数据段和代码段,loop
⼀、实验要求
⽴完成作业。
⽤debug调试程序,这样不但可以查看运⾏结果,还能检查程序问题。
⽤蓝⾊或者绿⾊作答。
⼆、实验内容
:
①从键盘输⼊⼀个⼩写字母,存储在数据段中;
②将其转换成⼤写字母后再次存储在数据段中(不能覆盖之前存储的⼩写字母);
③将⼤写字母输出。
思考1:debug调试程序,数据段起始物理地址和代码的起始物理地址分别是多少?
思考2:debug调试程序,未执⾏汇编指令前,DS的默认值是多少,有什么意义?
源程序(不要截图):
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
datasegment
stodb?,?
dataends
codesegment
assumeds:data,cs:code
start:
movax,data
movds,ax
;键盘输⼊字符
movah,01h
int21h
;转换字符,32的⼗六进制是20,⼤写转换成⼩写是加上32
subal,20h
;显⽰的字符
movdl,al
movah,02h
int21h
movdx,offsetsto
movax,4c00h
int21h
codeends
endstart
思考1:debug调试程序,数据段起始物理地址:076A:0010
代码的起始物理地址分别是:076B:0000
思考2:debug调试程序,未执⾏汇编指令前,DS的默认值
是075A,从ds中可以的得到PSP的段地址,PSP的地址为
075A:0000,程序的地址为075A:0000
⼤⼩⾄少为10个字节,数据全0;在代码段中编写程序,使⽤loop循环,将⼗进制数据
48,49,50,51,52,53,54,55,56,57存储在数据段中,覆盖之前存储的全0。再使⽤loop循环,将上述数据当做ASCII码输
出。思考3:debug调试程序,数据段起始物理地址和代码的起始物理地址分别是多少?数据段和代码段之间有间隔吗?如果有,这些间隔
可以使⽤吗?
提⽰:

数据段设置三步曲是?

数据段设置多⼤?其标签的属性是字节还是字?

bx设置成什么值,可以使⽤[bx]访问数据段?

变化的⼗进制数据(48,49,50…)存储在哪个寄存器,再⽤那个寄存器的数值放⼊数据段中,对程序没有影响?
源程序(不要截图):
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
Datasegment
daDB16DUP(10)
strdw48,49,50,51,52,53,54,55,56,57
Dataends
assumecs:code,ds:data
codesegment
start:
movax,data
movds,ax
movax,str
movbx,offsetstr
movcx,9
s:movbx,0
addax,bx
loops
movstr,ax
movax,4c00h
int21h
codeends
endstart
思考3:
debug调试程序,数据段起始物理地址:076A:0010
代码的起始物理地址076D:0000,数据段和代码段之间有间隔,
这些间隔应该不可以使⽤
。将代码段中设置ds的指令删除。
思考4:猜测程序能成功⽣成可执⾏⽂件吗?猜测程序能成功运⾏吗?请验证猜测是否正确。
思考5:debug下,执⾏相关代码后,⼗进制数据48,49,50…有没有被放⼊数据段中?若没有,那么放在哪⾥了?
源程序(不要截图):
Datasegment
daDB16DUP(10)
strdw48,49,50,51,52,53,54,55,56,57
Dataends
assumecs:code,ds:data
codesegment
start:
;movax,data
;movds,ax
movax,str
movbx,offsetstr
movcx,9
s:movbx,0
addax,bx
loops
movstr,ax
movax,4c00h
int21h
codeends
endstart
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!
debug下,执⾏相关代码后,⼗进制数据48,49,50…有没有被放⼊数据段中
思考4:猜测程序能成功⽣成可执⾏⽂件;猜测程序能成功运⾏
思考5:debug下,执⾏相关代码后,⼗进制数据48,49,50…没有被放⼊数据段中,放到PSP了
⼊⾃⼰的⽣⽇年⽉⽇(BCD码,例如2000h,0501h),和现在的年份(BCD码,例如2021h)。编写程序将数据
段中存放的现在的年减去⾃⼰⽣⽇的年份后,将结果存放在数据段中。
数据段定义⽰例:
源程序(不要截图):
Datasegment
stodw2001h,0525h,2021h,?
Dataends
assumecs:code,ds:data
codesegment
start:
movax,data
movds,ax
movax,2021h
movbx,2001h
movcx,2021h
subcl,al
movdl,cl
movbx,offsetsto
movax,4c00h
int21h
codeends
endstart
【⼩⼩的记录⼀下,等待⽼师的讲解~今天的热⼲⾯挺好吃的,⼜买了黄⽠和⾹蕉,也算是补充⽔果啦!】
句⼦君:
“当我们努⼒使⾃⼰变得⽐现在更好的时候,
我们周围的⼀切也会变得更好。”
欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!