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

实验五

时间:2018-11-25 16:25:01      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:add   9.png   找不到   实验   png   size   class   查看   sum   

1.

源码:

assume cs:code, ds:data, ss:stack
data segment
  dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
data ends

stack segment
  dw 0, 0, 0, 0, 0, 0, 0, 0
stack ends

code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16
        
        mov ax, data
        mov ds, ax
       
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]
        
        mov ax,4c00h
        int 21h

code ends
end start

运行结果:

技术分享图片

技术分享图片

code段地址为076b,而stack段地址比它小一位。查看后,data段数据为0123h 0456h 0789h 0ABCh-0DEFh 0FEDh 0CBAh 0987h

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

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

2.

源码:

assume cs:code, ds:data, ss:stack
data segment
  dw 0123h, 0456h
data ends
stack segment
  dw 0, 0
stack ends
code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16    
        mov ax, data
        mov ds, ax       
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]        
        mov ax,4c00h
        int 21h
code ends
end start

技术分享图片

技术分享图片

data段中数据为:0123h  0456h

技术分享图片

cs=076c,ss=076b,ds=076a

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

 对于:

name segment

...

name ends

段中数据占N个字节,则程序加载后该段实际占据空间为[(N+15)/16]*16。

3.

assume cs:code, ds:data, ss:stack
code segment
start:  mov ax,stack
        mov ss, ax
        mov sp,16      
        mov ax, data
        mov ds, ax        
        push ds:[0]
        push ds:[2]
        pop ds:[2]
        pop ds:[0]        
        mov ax,4c00h
        int 21h
code ends
data segment
  dw 0123h, 0456h
data ends
stack segment
  dw 0,0
stack ends
end start

 技术分享图片

data段数据为0123h 0456h

cs=076a,ds=076d,ss=076e

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

4.

实验3能正常执行。因为前两个是数据段开头,而第三个是以指令开头,去掉start后,前两个就找不到入口了。

5.

assume cs:code
a1 segment
  db 1,2,3,4,5,6,7,8
a1 ends
b1 segment
  db 1,2,3,4,5,6,7,8
b1 ends
c1 segment   
  db 0,0,0,0,0,0,0,0	    
c1 ends
code segment
start:
	mov bx,0
	mov dx,0
	mov cx,8
s:	mov dx,0
	mov ax,a1
	mov ds,ax
	add d1,[bx]
	mov ax,c1
	mov ds,ax
	mov [bx],dl
	inc bx
loop s
mov ax,4c00h
int 21h        
code ends
end start

  技术分享图片

数据段c在程序运行前后如图。

6.

assume cs:code
a segment
  dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
  dw 0,0,0,0,0,0,0,0
b ends
code segment
start: 
	mov ax,a
	mov ds,ax
	mov ax,b
	mov ss,ax
	mov sp,10h
	mov bx,0
	mov cx,8
s:	push [bx]
	inc bx
	inc bx
	loop s
	mov ax,4c00h
	int 21h    
code ends
end start

  技术分享图片

总结:

通过这6个实验的学习,我对code,stack,data等段有了深入的了解。

实验五

标签:add   9.png   找不到   实验   png   size   class   查看   sum   

原文地址:https://www.cnblogs.com/1193093174qq/p/10015641.html

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