用汇编语言基础的语法从键盘输入六个加数N1,N2,N3,N4,N5,N6六个均为1-4位的无符号十进制数,求和最后输出十进制结果
时间: 2023-09-06 14:12:20 浏览: 405
mul.rar_MUL汇编程序_汇编语言 输入两个1位十进制数
5星 · 资源好评率100%
好的,这里是一个用汇编语言实现从键盘输入六个加数N1,N2,N3,N4,N5,N6,求和并输出十进制结果的示例代码:
```
; 汇编语言计算六个数之和
.model small
.stack 100h
.data
inputMsg db '请输入六个1-4位的无符号十进制数,以空格分隔:$'
resultMsg db '十进制结果:%d$'
.code
main proc
mov ax, @data
mov ds, ax
; 从键盘输入六个加数
lea dx, inputMsg
mov ah, 9
int 21h
; 读取六个数
mov si, offset nums
mov cx, 6
readNum:
call readUnsignedNum
mov [si], al
inc si
loop readNum
; 将六个数相加
mov al, 0
mov si, offset nums
mov cx, 6
addNum:
add al, [si]
inc si
loop addNum
; 输出十进制结果
mov si, offset decimal
push si
push ax
lea dx, resultMsg
mov ah, 9
int 21h
mov ah, 4ch
int 21h
main endp
; 读取一个无符号十进制数
; 输入:无
; 输出:ax-读取的十进制数
readUnsignedNum proc
xor ax, ax
xor cx, cx
readUnsignedNumLoop:
mov ah, 1
int 21h
cmp al, '0'
jb readUnsignedNumEnd
cmp al, '9'
ja readUnsignedNumEnd
sub al, '0'
mov bl, 10
mul bx
add ax, bx
inc cx
cmp cx, 4
jb readUnsignedNumLoop
readUnsignedNumEnd:
ret
readUnsignedNum endp
; 数据段定义
nums db 6 dup (0)
decimal db 6 dup (0), '$'
end main
```
这个示例代码的主要流程与上一个问题的代码类似,只是去掉了转化为二进制数和求二进制结果中1的个数的步骤,直接输出十进制结果即可。
阅读全文