码迷,mamicode.com
首页 > 其他好文 > 详细

实验五

时间:2018-11-25 17:56:46      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:nbsp   .com   方法   问题   stack   sum   image   tar   int   

(1)程序返回前,data段中的数据:

技术分享图片

程序返回前,cs=076c,ss=076b,ds=076a

code段地址为X,data段地址为X-2,stack段地址为X-1

(2)程序返回前,data段中的数据:

技术分享图片

程序返回前,cs=076c,ss=076b,ds=076a

code段的段地址为X,则data段地址为X-2,stack段地址为X-1

对定义如下的段:

name segment:

...

name ends

若段中数据占N个字节,则程序加载后,该段实际占有的空间:(N/16+1)*16

(3)

程序返回前,data段中的数据:

 技术分享图片

程序返回前,cs=076a,ss=076e,ds=076d

code段的段地址为X,则data段地址为X+3,stack段地址为X+4

(4)

题(3)中的可以顺利执行,因为题(3)中代码段放在第一位,若不指明程序入口,默认第一个为程序入口。

(5)

源代码 :

 

assume cs:code
a segment
    db 1,2,3,4,5,6,7,8
a ends

b segment
    db 1,2,3,4,5,6,7,8
b ends

c segment
    db 0,0,0,0,0,0,0,0
c ends

code segment
start:    
    mov cx,8
    mov bx,0

s:             
    mov dl,0
    mov ax,a
    mov ds,ax
    add dl,[bx]
    
    mov ax,b
    mov ds,ax
    add dl,[bx]

    mov ax,c
    mov es,ax
    mov es:[bx],dl

    inc bx
loop s

mov ax,4c00h
int 21h

code ends
end start

 

截图:

未运行前:技术分享图片

运行后:技术分享图片

经过验证,实验数据确实相加了。

(6)源代码:

 1 assume cs:code
 2 a segment
 3     dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
 4 a ends
 5 
 6 b segment
 7     dw 0,0,0,0,0,0,0,0
 8 b ends
 9 
10 code segment
11 start:
12     mov cx,8
13     mov ax,a
14     mov ds,ax
15     mov ax,b
16     mov ss,ax
17     mov sp,10h
18     mov bx,0
19     
20 s:
21     push [bx]
22     add bx,2
23 loop s
24 
25     mov ax,4c00h
26     int 21h
27 code ends
28 end start

实验结果截图:

技术分享图片

由图可知,运行前b段都为0,运行后将这八个字型数据逆序存入该段中。

二.总结与体会

在这一块中,我更多学习了关于多个段的程序编写的方法,而且了解到各个程序段我们该学会如何去安排他们。

通过不同段的存放,避免了长度不能超过64kb的问题,还是很实用的。

 

实验五

标签:nbsp   .com   方法   问题   stack   sum   image   tar   int   

原文地址:https://www.cnblogs.com/xcss831/p/10015730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!