练习一:
源码:
assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov cx,16
mov bx,07b8h
mov ax,0403h
s: mov [bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end
运行效果:
修改后:
练习二:
源码:
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov cx,40h
mov al,0
s: mov [bx],al
inc al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
debug查看修改情况:
修改成功
练习三:
源码:
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
第一空填cs,因为指令代码写在cs:ip中,想要复制代码,要从cs段寄存器中提取。
第二空填17h,进入debug环境下对代码反汇编,mov ax,4c00h偏移地址为0017,所以之前一共有内存为17h的代码。
反思:
收获,通过这次实验,我知道了,c/c++中循环语言在底层的具体实现步骤。不足,虽然做了实验,但是还有许多不理解的地方,不能准确的知道cx的具体取值等。