第6章 检测点6.1
(1).下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start:mov ax,0 ;将0送入AX寄存器中
mov ds,ax ;将AX寄存器中的数据送入DS寄存器中,即将0送入DS中
mov bx,0 ;将0送入BX寄存器中
mov cx,8 ;将8送入CX寄存器中,共有8个数据,所以循环8次
s:mov ax,[bx] ;将内存单元0:[bx]中的数据送入AX寄存器中
mov cs:[bx],ax ;改写程序中的数据
add bx,2 ;由于是字型数据,所以加2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
将上面程序在DOS中运行后使用D命令查看内存单元中的数据如下所示:
(2).下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:
此程序利用栈进行数据传送,则只需要将栈顶设置在数据段的最后面,然后利用出栈将数据放入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,cs
mov ss,ax
mov sp,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
将上面程序在DOS中运行后使用D命令查看内存单元中的数据如下所示: