标签:idt 命令 编写 查看 star alt ring 图片 deb
任务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.在debug下编译,连接,用r命令查看cx的值
2.用 d 命令查看数据段的值
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.在debug下编译,连接
若代码段的段地址为 x,则数据段的段地址为 x?2,栈段的段地址为 x?1。
任务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.编译连接,debug下运行
代码段的段地址为 x,则数据段的段地址为 x+3,栈段的段地址为 x+4
任务4.
将以上三题中最后一条伪指令“end start"改为”end",则哪个程序仍然可以正确执行?请说明原因。
第三个程序可以正确执行,因为代码段放在了最前面,将最后一条伪指令"end start"改为"end",实验三没有影响。
任务5.
1.编译连接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 8 dup(0)
c ends
code segment
start: mov ax, a
mov ds, ax
mov ax, b
mov es, ax
mov cx, 8
mov bx, 0
s: mov dl, ds:[bx] ;
add dl, es:[bx]
mov ax, c
push ds ;
mov ds, ax
mov [bx], dl
pop ds
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end start
任务6.
1.编写,编译
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, 16
mov bx, 0
mov cx, 8
s: push ds:[bx]
add bx, 2
loop s
mov ax, 4c00h
int 21h
code ends
end start
标签:idt 命令 编写 查看 star alt ring 图片 deb
原文地址:https://www.cnblogs.com/nzy699/p/10055162.html