汇编中的一个入门级的小问题

main proc far
start:
mov ax,data
mov ds,ax
mov ax, stack
mov ss, ax
mov sp, 200
mov dl, 0
call display ; 登陆界面的显
mov ax,4c00h
int 21h
main endp

重点在下头

display proc near
mov cx, 13h
mov ax, 0b81fh
mov es, ax
mov bx, offset snake00
row1:
push cx
mov cx, 60
mov si, 0h
col1:
mov al, [bx]
mov es:[si], al
cmp al, 2ah
je color11
cmp al, 23h
je color21
jmp color31
color11:
mov di, 0h
jmp loop01
color21:
mov di, 1h
jmp loop01
color31:
mov di, 2h
jmp loop01
color41:
mov di, 3h

loop01:
mov ah, [di]
mov es:[si + 1], ah
inc bx
add si, 2
loop col1
pop cx

mov ax, es
add ax, 0ah
mov es, ax
add bx, 3
loop row1
ret
display endp

【display中 看到一些 loop01这种用冒号开头的东西,我该怎么去理解他呢 因为相比其它程序我现在还没学到用什么工具去看单步调试 所以不太确定他的执行流程。 例如在main中执行了display ,当程序调到display中 会从上到下执行color。。:loop01: 这种用冒号标记的代码??还是跳过所有的被被标记的代码 ,直到在某个地方出现调用才会被执行】

【猜想1:标号 只是一个标记位置的预留符号 不影响程序从上到下的流程。功能类似于HTML 中的锚点功能,便于程序执行到某个位置 跳回到 标号位置重新执行一次。】

【猜想2:标号类似与程序中的内部函数,仅供内部使用 而且要有调用才会执行其中囊括的代码。】

-----求高手前辈帮忙解答一下。不胜感激。还有 当初老铁学习的时候用啥调试的呢

第1个回答  2018-05-02
loop是循环,从CX是循环次数,从第一次执行开始计算次数,每执行一次CX-1直到CX=0停止追问

我问的是loop01 是按顺序执行 还是 有调用才执行呢

追答

按顺序执行

相似回答