实验五

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

 (1)

还是原来的0123, 0456, 0789, 0abc, 0def, 0fed, 0cba, 0987

(2)

依照上表cs=076C,ss=076B,ds=076A

 (3)

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

段地址的长度为16H

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中的数据依旧为0123, 0456

(2)

cs=076C,ss=076B,ds=076A

(3)

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

(4)\

其实就是程序段的空间分配,不管满不满,都是16h

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

(1)

还是0123, 0456

(2)

cs=076A,ss=076E,ds=076D

code:X,data:X+3,stack:X+4

(3)

还是分配16*N的空间

4.

数据段当成代码段,在编译时不会报错,但在运行时,因为错误的识别代码,所以会错误

5.

 code segment
start:

mov ax,a
mov ds,ax
mov cx,4
mov bx,0

s: mov ax,ds:[bx]
add ax,ds:[bx+10h]
mov ds:[bx+20h],ax
add bx,2
loop s
mov ax,4c00h

    int 21h
code ends
end 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 ends

b segment
  dw 8 dup(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 ds:[bx]
add bx,2
loop s
mov ax,4c00h
    int 21h

code ends
end start

 

posted @ 2018-11-30 22:19  tutoumengxin  阅读(113)  评论(0)    收藏  举报