(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:
具体讲解在注释中会提到
assume cs:codesg
codesg segment
dw 0123h, 0456h, 0789h, 0abch, 0fedh, 0cbah, 0987h
start: mov ax, 0
mov ds, ax
mov bx, 0
mov cx, 8
s: mov ax, [bx] ;将ds:[bx](即从0:0开始)中的数据送进寄存器ax中
mov cs:[bx], ax ;将寄存器ax中的数据送进cs:[bx]处
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
;8个字单元定义8个字形数据
dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;10个字单元用作栈空间
start: mov ax, cs
mov ss, ax
mov sp, 24h
;设置栈顶ss:sp指向cs:24 因为8个字型数据和10个字单元,一共是18个字,即36个Byte,
;转成十六进制即24H,我们要将cs:14~cs:23的内存空间当作栈使用