;ASCII加法 ASCII.asm
;对隐含固定小数点的串执行ASCII运算
include irvine32.inc
DECIMAL_OFFSET=5 ;距离穿串侧的偏移量
.data
decimal_one BYTE "100123456789765" ;1001234567.89765
decimal_two BYTE "900402076502015" ;9004020765.02015
sum BYTE (SIZEOF decimal_one+1)DUP(0),0
.code
main PROC
;从最后一个数位开始
mov esi,SIZEOF decimal_one-1 ;用作字符串的偏移量
mov edi,SIZEOF decimal_one ;用作字符串指针
mov ecx,SIZEOF decimal_one ;循环次数
mov bh ,0 ;进位清0
L1:
mov ah,0 ;执行加法前清除AH
mov al,decimal_one[esi]
add al,bh ;取第一个数字并与进位相加
aaa ;调整合数AH进位值
mov bh,ah ;将进位置保存
or bh,30h ;将其转化为ASCII码
add al,decimal_two[esi] ;加上第二个数字
aaa
or bh,ah ;进位值与carry1进行OR运算
or bh,30h ;将结果转化为ASCII码
or al,30h ;将其转化为ASCII码
mov sum[edi],al ;将AL保存到sum
dec esi
dec edi
loop L1
mov sum[edi],bh
;显示合数字符串
mov edx,OFFSET sum
call WriteString
call Crlf
call WaitMsg
exit
main ENDP
END main
042.非压缩AAA指令计算加法
最新推荐文章于 2023-11-17 12:24:45 发布
本文介绍了一个使用ASCII码实现的固定小数点加法运算器的汇编语言代码。该运算器可以处理两个预定义的字符串,每个字符串代表一个带有小数点的数字,并返回它们的和。通过逐位加法和进位处理,实现了字符串形式的数字相加。
摘要由CSDN通过智能技术生成