这是一个x86 asm程序,它在屏幕中间打印一个从000到999的“计数器”,它可以正常工作(我没有写)。问题是我想了解它是如何工作的。什么DIV
和STACK的使用这个程序。这个x86汇编程序是如何工作的
程序如何去知道如何去从009到010.什么是内循环?
我知道它是如何清除屏幕并打印到屏幕中间的,我知道时钟延迟功能。
DIV
,PUSH
和POP
有什么用途?
基本上我试图追踪它并理解所使用的函数。我还是一个初学者,请帮忙。谢谢。
下面的代码:
.MODEL SMALL
.STACK 64
.DATA
CNT DW 0h
.CODE
MOV AX,@data
MOV DS,AX
MOV AX, 0600H
MOV BH,07
MOV CX, 0000
MOV DH,12
MOV DL,39
INT 10H
MOV AX,0600H
MOV BH,07
MOV CX,0000
MOV DX,184FH
INT 10H
MOV CNT,0
L1: MOV AH,02h
MOV BH,0
MOV DH,12
MOV DL,39
INT 10h
MOV AX,CNT
MOV BL,10
DIV BL
PUSH AX
MOV AH,00
MOV BL,10
DIV BL
PUSH AX
MOV DL,AL
ADD DL,48
MOV AH,02h
INT 21h
POP AX
MOV DL,AH
ADD DL,48
MOV AH,02h
INT 21h
POP AX
MOV DL,AH
ADD DL,48
MOV AH,02h
INT 21h
MOV CX, 0007h
MOV DX, 2120h
MOV AH, 86H
INT 15H
INC CNT
CMP CNT,999
JBE L1
MOV AH,4ch
INT 21h
END
'JBE L1'是一个跳转指令,使执行在'L1:MOV AH,02h'继续执行# – Draco18s
使用调试程序遍历代码可能会大大提高您对此代码执行操作的理解程度为什么。 –