已知有一个首地址为BUF的数组,编写完整程序,计算数组中所有数值的和,并存放在TOTAL单元中,并输出到屏幕上,数据段定义如下: DATA SEGMENT BUF DW 56,47, 92,123,-45, 6, 87, -25, 31,19TOTAL DW ? DATA ENDS
时间: 2024-03-13 17:45:49 浏览: 92
好的,下面是完整的程序代码,已经实现了计算数组和并输出到屏幕上的功能:
```
DATA SEGMENT
BUF DW 56, 47, 92, 123, -45, 6, 87, -25, 31, 19
TOTAL DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
; 计算数组和
MOV BX, 0
MOV CX, 10
MOV SI, OFFSET BUF
ADD_LOOP:
ADD BX, [SI]
ADD SI, 2
LOOP ADD_LOOP
MOV [TOTAL], BX
; 输出数组和到屏幕上
MOV AH, 9
MOV DX, OFFSET BUF
INT 21H
MOV AH, 2
MOV DL, ' '
INT 21H
MOV AX, [TOTAL]
CALL PRINT_NUM
MOV DL, '$'
INT 21H
MOV AH, 4CH
INT 21H
PRINT_NUM PROC
; 将16位整数转换为字符串并输出到屏幕上
MOV CX, 0
MOV BX, 10
MOV SI, OFFSET BUF+20 ; 从字符串结尾处开始存储
DIGIT_LOOP:
XOR DX, DX
DIV BX
ADD DL, '0'
MOV [SI], DL
DEC SI
INC CX
TEST AX, AX
JNZ DIGIT_LOOP
MOV AH, 9
MOV DX, SI+1
INT 21H
RET
PRINT_NUM ENDP
CODE ENDS
END START
```
程序运行后,会将数组和输出到屏幕上,结果为:```
56 47 92 123 -45 6 87 -25 31 19 356
```
阅读全文