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

实验五

时间:2018-11-26 02:35:34      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:段地址   ext   .com   src   loop   加载   bug   span   地址   

c教材 133 实验 5

将下面程序编译,连接,用DEBUG加载.跟踪

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
技术分享图片

 


1 CPU执行程序,程序返回前DATA段的数据是多少?0123h ,0456h技术分享图片

 

2.CPU执行程序,程序返回前,CS=SS+1h;CS=DS+2h;SS=CS-1h;SS=ds+2h;ds=cs-2h;ds=ss-1;技术分享图片

 

3程序加载完后,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
1 CPU执行程序,程序返回前DATA段的数据是多少?  0123;0456 技术分享图片

.2CPU执行程序,程序返回前,CS=SS+1h;CS=DS+2h;SS=CS-1h;SS=ds+2h;ds=cs-2h;ds=ss-1;技术分享图片

3。程序加载完后,CODE段地址X,则DATA段位X-2,,STACK段X-1;

 4。对于name segment

name ends

如果段中的数据占N个字节,则程序加载后该段实际占有的空间为:如果N〉16x(x为正整数);则分配空间为X*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,0,0
stack ends
end start
1 CPU执行程序,程序返回前DATA段的数据是多少?  0123;0456 技术分享图片

 

.2CPU执行程序,程序返回前,CS=SS-4h;CS=DS-3h;SS=CS+4h;SS=ds+1h;ds=cs+3h;ds=ss-1;技术分享图片

 

3。程序加载完后,CODE段地址X,则DATA段位X+3,,STACK段X+4;

 4如果END START改为end

那个可以执行?

技术分享图片

CODE段可以执行;如果将DATA,STACK段放在前面将不会一开始 执行CODE段;

 (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
      
      q: mov ax,a
         mov ds,ax
     mov dl,[bx]
    mov ax,b
        mov ds,ax
        add dl,[bx]
        mov ax,c
        mov ds,ax
        mov [bx],dl
        add bl,1
       loop q
     
      
code ends
end start

技术分享图片

不用栈 直接多次用DS将值赋予 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,8
    mov cx,4
       mov bx,0
      s:
         add bx,2
         mov dl,[bx]
         sub bx,2
         mov al,[bx]
         mov dh,al
         add bx,4
         push dx
         loop s
       
code ends
end start

开始时:sp=8

技术分享图片

sp=16

 技术分享图片

结束时:sp=8

技术分享图片

SP=16

技术分享图片

 


技术分享图片

 

实验总结: 在这次实验中我多次将AX,BX,CX,DX,当成段寄存器使用编译无法进行,在实验6

前9个都是16位进制而不是10进制,但是在结果我发现将SP改为16和8时D命令出现不同 B栈在不同的SP下0的位置发生改变==;

 

 

实验五

标签:段地址   ext   .com   src   loop   加载   bug   span   地址   

原文地址:https://www.cnblogs.com/nanjinghuangsheng/p/10018167.html

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