admin 管理员组文章数量: 1086866
王爽 汇编语言 第六章 实验五
(1)
输入以下程序
assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0cbah,0987h
data endsstack segmentdw 0,0,0,0,0,0,0,0
stack endscode segment start: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21h
code ends
end start
1)data段中的数据是多少?
显然,data 里面的数据没有发生变化
data:0123h,0456h,0789h,0abch,0defh,0cbah,0987h
2)求CS,SS,DS
还是上面的图
CS=076C,SS=076B,DS=076A
3)假设code段地址为X,则data段地址为X-2,stack段地址为X-1
(2)换一段程序
assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h
data endsstack segmentdw 0,0
stack endscode segment start: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21h
code ends
end start
和之前的程序相比,data 和stack段的数据长度变小了,那么我们来看一下内存的占用吧
可见,CS没有发生变化,这里类似于数据对齐,一个段的开头一定是X:0的形式
1)data段中的数据是多少?
data:0123h,0456h
2)求CS,SS,DS
还是上面的图
CS=076C,SS=076B,DS=076A
3)假设code段地址为X,则data段地址为X-2,stack段地址为X-1
4)对于如下定义的段
name segment
...
name ends
如果段中占用N个字节,啧程序加载后,实际占有空间为 ⌈ N 16 ⌉ × 16 \lceil \frac{N}{16} \rceil\times16 ⌈16N⌉×16 (说白点就是向上凑够16个)
(3)再换一段程序
assume cs:code,ds:data,ss:stackcode segment start: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21h
code endsdata segmentdw 0123h,0456h
data endsstack segmentdw 0,0
stack endsend start
1)data段中的数据是多少?
data:0123h,0456h
2)求CS,SS,DS
CS=076A,SS=076E,DS=076D
3)假设code段地址为X,则data段地址为X+4,stack段地址为X+5
(4)不指明程序入口,那么程序会直接从最开始运行,所以只有(3)可以正常运行
(5)写一段程序让a,b中的数据求和到c中
assume cs:code
a segmentdb 1,2,3,4,5,6,7,8
a ends
b segmentdb 1,2,3,4,5,6,7,8
b ends
c segmentdb 0,0,0,0,0,0,0,0
c endscode segment start:mov ax,amov ds,axmov cx,8mov bx,0
s:mov ax,ds:[bx]add bx,20hmov ds:[bx],axsub bx,10hmov ax,ds:[bx]add bx,10hadd ax,ds:[bx]mov ds:[bx],axsub bx,20hinc bxloop s
code endsend start
运行情况如下:
当学习了7.5之后,我们可以利用[bx+idate]的方式来访问内存,可以化简我们的程序
assume cs:code
a segmentdb 1,2,3,4,5,6,7,8
a ends
b segmentdb 1,2,3,4,5,6,7,8
b ends
c segmentdb 0,0,0,0,0,0,0,0
c endscode segment start:mov ax,amov ds,axmov cx,8mov bx,0
s:mov ax,ds:[bx]mov ds:20h[bx],axmov ax,ds:10h[bx]add ax,ds:20h[bx]mov ds:20h[bx],axinc bxloop s
code endsend start
(6)
assume cs:code
a segment dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a endsb segmentdw 0,0,0,0,0,0,0,0
b endscode segment
start:mov ax,bmov ss,axmov ax,amov ds,axmov sp,10hmov cx,8mov bx,0s:push ds:[bx]add bx,2loop scode endsend start
运行结果
其他实验题答案:实验题答案合集
本文标签: 王爽 汇编语言 第六章 实验五
版权声明:本文标题:王爽 汇编语言 第六章 实验五 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1693761681a241307.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论