编写一个汇编程序,让用户输入一个字符串,将该字符串中的数字进行累加,将累加结果输出。
时间: 2023-06-13 14:02:48 浏览: 123
一个汇编程序
以下是 x86 汇编语言实现的程序,使用中断 21h 进行输入输出操作:
```assembly
.model small
.stack 100h
.data
msg db 'Enter a string: $'
num db 0
newline db 0Dh, 0Ah, '$'
.code
main proc
mov ax, @data
mov ds, ax
; 输出提示信息
lea dx, msg
mov ah, 9
int 21h
; 读取用户输入的字符串
lea dx, num
mov ah, 0Ah
int 21h
; 计算数字之和
mov bx, offset num + 1 ; 字符串首地址
mov cl, [num + 1] ; 字符串长度
mov al, 0 ; 累加器清零
sum_loop:
cmp cl, 0 ; 如果字符串长度已经为 0,则跳出循环
je sum_done
mov dl, [bx] ; 取出当前字符
cmp dl, 30h ; 如果当前字符不是数字,则跳过
jb sum_next
cmp dl, 39h ; 如果当前字符不是数字,则跳过
ja sum_next
sub dl, 30h ; 将字符转换为数字
add al, dl ; 累加数字
sum_next:
inc bx
dec cl
jmp sum_loop
sum_done:
; 输出数字之和
add al, 30h ; 将数字转换为字符
mov dl, al
lea dx, newline
mov ah, 9
int 21h
mov ah, 4ch
int 21h
main endp
end main
```
该程序首先输出提示信息,然后使用中断 21h 的 0Ah 功能读取用户输入的字符串,接着使用循环逐个字符判断是否为数字,并将数字相加得到结果。最后将结果转换为字符并输出。
阅读全文