作业帮 > 综合 > 作业

汇编程序求sum=1+2+3+.>100,并求出累加的最后一个自然数的值

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/26 01:03:31
汇编程序求sum=1+2+3+.>100,并求出累加的最后一个自然数的值
code segment
main proc far
assume cs:code
start:mov bl,1
mov al,0
begin:add al,bl
inc bl
cmp al,100
jle begin
add bl,30h
mov dl,bl
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
main endp
code ends
end start
为什么我的这个程序运行是错的
add al,bl
这句就错了,al是8位的寄存器,只能存储0-255之间的数字,你的结果超过了啊.应该用ax
再问: 没有超过255啊,超过100就不退出了那个循环了啊
再答: 没看清楚,你是想求 和>100时的bl的值啊 那错在add bl,30h bl可能大于0fh,加上30h后不是数字了 如果bl的值在0-9范围内,你的程序是对的。 大于9以后要处理两位数
再问: 我改了,结果还错 start: mov bl,1 mov al,0 begin: add al,bl inc bl cmp al,100 jle begin mov dl,bl mov cl,4 shr dl,cl add dl,30h mov ah,02h int 21h and bl,0fh add bl,30h mov dl,bl mov ah,02h int 21h mov ah,4ch int 21h ret main endp code ends end start
再答: 逻辑上没错误了,具体处理上还有错,你要的是16进制吗?是否需要化成10进制? 30h-39h对应数字0-9 超过3ah是些标点符号,你的程序显示符号了?
再问: 输出了0? 我知道了要进行十进制调整指令 daa