;ex1.asm
assume cs:code
code segment
mov ax,0b810h
mov ds,ax
mov byte ptr ds:[0],1
mov byte ptr ds:[1],1
mov byte ptr ds:[2],2
mov byte ptr ds:[3],2
mov byte ptr ds:[4],3
mov byte ptr ds:[5],3
mov byte ptr ds:[6],4
mov byte ptr ds:[7],4
mov ah,4ch
int 21h
code ends
end
;ex2.asm
assume cs:code
code segment
mov ax,0b810h
mov ds,ax
mov bx,0
mov ax,101H
mov cx,4
s: mov [bx],ax
add bx,2
add ax,101H
loop s
mov ah,4ch
int 21h
code ends
end
结合可执行文件加载后寄存器CX的值,使用u命令精确反汇编截图
灵活使用t命令/p命令、g命令,对ex2.exe进行调试的截图(不一定要单步,有些地方可以
用g命令,一次执行多行汇编指令)
发现在debug时使用d指令查看对应内存单元时并没有发生改变,且小图标也没有出现,可能是因为被刷新掉了
;综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0237H
assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8H
mov ax,3902H
mov cx,16
s: mov [bx],ax
add bx,2
loop s
mov ah,4ch
int 21h
code ends
end
;实现向内存0:200~0:23F依次传送数据0~63(3FH),综合使用[bx]和loop,编写汇编源程序
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,64
s: mov [bx],bl
add bx,1
loop s
mov ah,4ch
int 21h
code ends
end
;利用栈的特性,综合使用loop,push实现(限定仅使用8086中已学过的指令实现)
assume cs:code
code segment
mov ax,0020h
mov ss,ax
mov ax,0040h
mov sp,ax
mov bx,3f3eh
mov cx,32
s: push bx
add bx,-0202h
loop s
mov ah,4ch
int 21h
code ends
end
assume cs:code
code segment
mov ax,code
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,18h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
原文:https://www.cnblogs.com/sanshuiii/p/13933769.html