汇编程序,没看到过程,谁能给写一下注释

题目:

数据基本定义如下:
NUM DW 0133H,0D5FH, 1234H, 1250H, 0120H, 0C50H, 1218H, 1220H
CUNT EQU ($-NUM)/TYPE NUM
NUM20 DB CUNT DUP(0)
NUM5 DB CUNT DUP(0)
NUM2 DB CUNT DUP(0)
NUM1 DB CUNT DUP(0)
试编制一个程序,分别对NUM中各数据统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。并将统计的个数分别存放在NUM20,NUM5,NUM2和NUM1的对应位置上。

代码如下:
DATA SEGMENT
NUM DW 0133H, 0D5FH, 1234H, 1250H, 0120H, 0C50H, 1218H, 1220H
CUNT EQU ($-NUM)/TYPE NUM
NUM20 DB CUNT DUP(0)
NUM5 DB CUNT DUP(0)
NUM2 DB CUNT DUP(0)
NUM1 DB CUNT DUP(0)

DATA ENDS
STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1

START: MOV AX,DATA
MOV DS,AX
MOV CX,CUNT
MOV SI,OFFSET NUM
MOV DI,0000H

LOP: MOV AX,[SI]
MOV BX,20
CALL DRI6
MOV NUM20[DI],DL
MOV BX,5
CALL DRI6
MOV NUM5[DI],DL
MOV BX,2
CALL DRI6
MOV NUM2[DI],DL
MOV NUM1[DI],AL
ADD SI,TYPE NUM
INC DI
LOOP LOP
INT 3
MOV AX,4C00H
INT 21H

DRI6 PROC
MOV DL,00H

LOP6: CMP AX,BX
JL EXIT0
SUB AX,BX
INC DL
JMP LOP6

EXIT0: RET
DRI6 ENDP
CODE ENDS
END START
关键句的注释解释一下,不用句句都写,谢谢大神们!

第1个回答  推荐于2016-07-01
我的汇编也只学了一点点,你这个问题我无法给出答案,但我知道你的问题出在哪里,你没有图形化思维,汇编的每一步都需要计算的,都可以建立图形的,即你可以通过debug等操作,也可以根据代码在脑中形成图形,看到代码的话,直接换成图像,一目了然。
我敢肯定,许多人学汇编包括其它编程之所以学不会,不是学的太慢了,恰恰是学的太慢了。学汇编,你应该看王爽的《汇编语言》第三版了,这本书I一定给给你极大的启发的。
学汇编的关键是建立图形化思维,看到代码直接换成图形,就很简单了。本回答被提问者和网友采纳
相似回答
大家正在搜