(1)下面的程序实现依次用内存 0:0~0:15 单元中的内容改写程序中的数据。
程序申请空间的段地址存放在段寄存器 CS 中,偏移地址为零,即起始地址为 CS:0、每次偏移地址移动两个字节大小。
题目要求使用 0:0~0:15 单元的内容改写程序中的数据,即使用 DS:0~ 的数据改写 CS:0~ 的内容。所以,缺失部分程序完成移动数据的功能,而 0:0~0:15 的数据已存放在寄存器 AX 中,所以缺失部分程序为 mov cs:[bx],ax。
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
________ ;mov cs:[bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
(2)下面的程序实现依次用内存 0:0~0:15 单元中的内容改写程序中的数据,数据的传送用栈进行
assume cs:codesg
codesg segment
dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H
dw 0,0,0,0,0,0,0,0,0,0
start: mov ax,__ ;mov ax,cs
mov ss,ax
mov sp,__ ;mov sp,36,即将 0:10h~0:24h 部分当作栈区使用
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
________ ;pop cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start