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 22:17:52 浏览: 163
STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack
5星 · 资源好评率100%
可以将输出字符的部分改为输出数字的部分,具体做法是将 `MOV DL,[BX]` 改为 `MOV DL,[BX]` 和 `SUB DL, '0'` 的组合,即将 ASCII 码转换为数字。修改后的代码如下:
```
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]
SUB DL,'0' ; 将 ASCII 码转换为数字
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
LEA DX,NUM1 ; 输出 NUM1 数组中的数字
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
```
注意,在输出 NUM1 数组中的数字时,需要将 DX 寄存器指向 NUM1 数组,然后使用 INT 21H 中的 9 号功能调用来输出数字。
阅读全文