汇编语言 实验5 编写,调试具有多个段的程序(转载)
1 将下面的程序编译连接,用加载,跟踪,然后回答问题。
(1)
data的数据从0到f为23 01 56 04 89 07 bc 0a ef 0d ed 0f ba 0c 87 09
(2)
情况有不同:cs为13c7 ds为13c5 ss为13c6
(3)
data段的段地址为x-2 stack段的段地址为x-1
2 将下面的程序编译连接,用加载,跟踪,然后回答问题。
data段中的数据从0到f为23 01 56 04 0 0 0 0 0 0 0 0 0 0 0 0
情况不同:cs为13c7 ds为13c5 ss为13c6
data段的段地址为x-2 stack段的段地址为x-1
((N/16)+1)*16个字节
3 将下面的程序编译连接,用加载,跟踪,然后回答问题。
(1)
data段中的数据从0到f为23 01 56 04 0 0 0 0 0 0 0 0 0 0 0 0
(2)
情况不同:cs 13c5 ds 13c8 ss 13c9
(3)
data段的段地址为 x+3 ss段的段地址为x+4
(4)
第三题可以正常运行。如果没有start,会从第一条指令开始运行。
即编译器会顺序执行指令。
5 程序如下,编写code段中的代码,将a段和b段中的数据依次相加,将结果存到2段中。
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 bx,0
mov cx,8
s:
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
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
6 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,b
mov ss,ax
mov sp,16
mov ax,a
mov ds,ax
mov cx,8
mov bx,0
s:
push [bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start