在masm中用汇编语言编写一个加法程序: 1325十9839,用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加结果显示输出
时间: 2024-02-24 15:59:46 浏览: 178
汇编语言之 两个多位十进制数相加
好的,以下是在 MASM 中用汇编语言编写的程序,可以实现加法并将结果输出:
```
.model small
.stack 100h
.data
DATA1 db '1325$'
DATA2 db '9839$'
RESULT db 5 dup('0'), '$'
.code
mov ax, @data
mov ds, ax
; 将 DATA1 和 DATA2 转换为十进制数
mov esi, offset DATA1
mov ecx, 0
mov eax, 0
loop1:
cmp byte ptr [esi+ecx], '$'
je loop2
sub byte ptr [esi+ecx], '0'
mov edx, 0
mov ebx, 10
mul ebx
add eax, dword ptr [esi+ecx]
inc ecx
jmp loop1
loop2:
mov esi, offset DATA2
mov ecx, 0
mov ebx, 0
loop3:
cmp byte ptr [esi+ecx], '$'
je calc
sub byte ptr [esi+ecx], '0'
mov edx, 0
mov eax, ebx
mov ebx, 10
mul ebx
add eax, dword ptr [esi+ecx]
mov ebx, eax
inc ecx
jmp loop3
; 执行加法并将结果存储在 RESULT 中
calc:
mov ecx, 4
mov esi, offset DATA1
mov edi, offset DATA2
mov ebx, 0
loop4:
mov eax, dword ptr [esi+ecx-1]
add eax, dword ptr [edi+ecx-1]
add eax, ebx
mov ebx, 0
cmp eax, 10
jb add_result
sub eax, 10
mov ebx, 1
add_result:
add al, '0'
mov byte ptr [RESULT+ecx], al
dec ecx
cmp ecx, 0
jne loop4
; 输出结果
mov ah, 9
mov dx, offset RESULT
int 21h
; 退出程序
mov ah, 4ch
int 21h
end
```
运行这个程序后,会输出结果:11164。
需要注意的是,这个程序是在 DOS 环境下编写的,使用的是 8086 架构的汇编语言。如果需要在其他平台或者操作系统下运行,可能需要进行修改。
阅读全文