DATA SEGMENT COURSE1 DB 70,88,92,90,99 DB 67,77,88,76,69 DB 74,87,77,74,70 DB 99,97,94,98,96 NUM1 DW 5 DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,COURSE1 LEA DI,NUM1 SUB SI,5 MOV CL,5 AA1: MOV BX,SI SUB AX,AX MOV CH,4 AA2: ADD BX,5 MOV DL,[BX] MOV AH,2 INT 21H MOV DL,20H MOV AH,2 INT 21H DAA ADC AH,0 DEC CH JNZ AA2 MOV [DI],AX INC SI ADD DI,2 DEC CL JNZ AA1 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 该代码输出的是字符,为什么呢,怎么改成输出数字,并显示输出结果
时间: 2023-07-02 16:17:52 浏览: 161
STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack
5星 · 资源好评率100%
这段代码输出的是字符,是因为在输出课程成绩的时候使用了 `INT 21H` 中的 2 号功能调用,该功能调用是输出字符。如果要输出数字,可以使用 `INT 21H` 中的 9 号功能调用来输出数字。具体做法是将 `MOV AH,2` 和 `INT 21H` 的部分改为 `MOV AH,9` 和 `INT 21H` 的组合,即使用 9 号功能调用来输出数字。
修改后的代码如下:
```
DATA SEGMENT
COURSE1 DB 70,88,92,90,99
DB 67,77,88,76,69
DB 74,87,77,74,70
DB 99,97,94,98,96
NUM1 DW 5 DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,COURSE1
LEA DI,NUM1
SUB SI,5
MOV CL,5
AA1:
MOV BX,SI
SUB AX,AX
MOV CH,4
AA2:
ADD BX,5
MOV DL,[BX]
MOV AH,9 ; 使用 9 号功能调用来输出数字
INT 21H
MOV DL,20H
MOV AH,2
INT 21H
DAA
ADC AH,0
DEC CH
JNZ AA2
MOV [DI],AX
INC SI
ADD DI,2
DEC CL
JNZ AA1
LEA DX,NUM1 ; 输出 NUM1 数组中的数字
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
```
在修改后的代码中,我们在最后加入了一段代码来输出 NUM1 数组中的数字,以便查看输出结果。
阅读全文