实验五

(1)将下面的程序编译连接,用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

 写源代码

编译,链接,运行后用debug命令

①不变

②CS=076C,SS=076B,DS=076A

③CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1 。

(2)将下面的程序编译连接,用Debug加载、跟踪,然后回答问题。

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

编译,链接,运行,debug

①不变 。

②CS=076CH,SS=076BH,DS=076AH。

③CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1 。

④((N+15)/16)*16

(3)将下面的程序编译连接,用Debug加载、跟踪,然后回答问题。

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

编译,链接,运行,debug

①不变 。

②CS=076AH,SS=076EH,DS= 076DH 。

③CODE段的段地址为X,则DATA段的段地址为 X+3 ,STACK段的段地址为 X+4 。

4)如果将(1)、(2)、(3)题中的最后一条伪指令“end start”改为“end”(也就是说,不指明程序的入口),则哪个程序仍然可以正确执行?请说明原因。

第3个可以执行。因为第三个程序入口处便是执行指令,而前两个则是把数据段放在了前面,所以没有办法可以正确的执行。   

5)程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果存到C段中。

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:
;?
code ends
end start

成功

 6)程序如下,编写code段中代码,用PUSH指令将A段中的前8个字型数据,逆序存储到B段中。

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: 
?
code ends
end start

成功

posted @ 2018-11-30 19:13  戳中笑点  阅读(173)  评论(2)    收藏  举报