汇编语言程序,请把程序的功能和每一步的详细解释写出来,程序里面少了几句话,要求补全。是明天的考试题

谢谢各位高手了!!先给五十分,运行成功以后至少再追加50分。

DATA SEGMENT
ARRAY DW 10 DUP(0)
A1 DB 0
A2 DB 0
C1 DB 'PASS:$'
C2 DB 'NO PASS:$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV BL,10
MOV SI,0
BEGIN: MOV DX,0
Q1: MOV AH,1
INT 21H
CMP AL,' '
JZ Q2
PUSH AX
MOV AX,DX
MUL BL
MOV DX,AX
POP AX
SUB AL,30H
MOV AH,0
ADD DX,AX
JMP Q1
Q2: MOV ARRAY[SI],DX
ADD SI,2
LOOP BEGIN
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
LEA SI,ARRAY
MOV CX,0AH
D1: MOV AX,[SI]
MOV BX,60
CMP AX,BX
JB S1
INC A1
JMP NEXT5
S1: INC A2
NEXT5: INC SI
INC SI
LOOP D1
NEXT6: LEA DX,C1
MOV AH,9
INT 21H
MOV AL,A1
CALL DISPLAY
NEXT7: LEA DX,C2
MOV AH,9
INT 21H
MOV AL,A2
CALL DISPLAY
MOV AH,4CH
INT 21H
RET

DISPLAY PROC NEAR
. . .
. . .
DISPLAY ENDP
CODE ENDS
END START

DATA SEGMENT //数据段//定义程序中所用到的数据
ARRAY DW 10 DUP(0)
A1 DB 0
A2 DB 0
C1 DB 'PASS:$'
C2 DB 'NO PASS:$'
DATA ENDS //数据段结束//
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;装载数据段
MOV CX,10 ;功能将000AH存入CX
MOV BL,10 ; 功能将0AH存入BL
MOV SI,0 ;MOV指令就不解释了,很基本,和上面的类似
BEGIN: MOV DX,0
Q1: MOV AH,1
INT 21H 调用系统功能函数INT为软件中断指令
CMP AL,' ' 比较指令,你这少了一个操作数
JZ Q2
PUSH AX 进栈
MOV AX,DX
MUL BL 乘法指令 (操作数)*(AL)=AX
MOV DX,AX
POP AX 出栈
SUB AL,30H 减法指令
MOV AH,0
ADD DX,AX 加法指令DX+AX=DX
JMP Q1 无条件转移指令
Q2: MOV ARRAY[SI],DX
ADD SI,2
LOOP BEGIN 计数循环语句,重复循环从BEGIN到此处的程序
MOV DL,0DH
MOV AH,2
INT 21H 软件中断指令
MOV DL,0AH
MOV AH,2
INT 21H 软件中断指令
LEA SI,ARRAY 传送偏移地址指令:把ARRAY的偏移地址存入SI
MOV CX,0AH
D1: MOV AX,[SI]
MOV BX,60
CMP AX,BX 比较指令
JB S1 小于转移指令若小于(CF=1)转移到标号S1处执行,否则顺序执行.
INC A1 加1指令
JMP NEXT5
S1: INC A2 加1指令
NEXT5: INC SI
INC SI
LOOP D1 计数循环语句
NEXT6: LEA DX,C1 传送偏移地址指令
MOV AH,9
INT 21H
MOV AL,A1
CALL DISPLAY 调用子程序DISPLAY
NEXT7: LEA DX,C2
MOV AH,9
INT 21H
MOV AL,A2
CALL DISPLAY 调用子程序DISPLAY
MOV AH,4CH
INT 21H
RET 无操作数语句,表示返回主程序

DISPLAY PROC NEAR 子程序开始
. . .
. . .
DISPLAY ENDP 子程序结束
CODE ENDS
END START
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答