You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在emu8086中无法正确显示变量数值的问题求助

在emu8086中变量数值显示问题求助

在emu8086里遇到变量数据显示异常:

  • 用int 21h的ah=09h调用能正常显示字符串,代码如下:
.model small
.data
v db 13, 'how are you doing','$'
.code
main proc

mov dx,OFFSET v
mov ah,09h  
int 21h

end main
main endp    

但尝试显示变量中存储的数值5时,输出错误,寄存器读取值为CD,使用的代码如下:

.model small
.data
v db 5
.code
main proc
mov dl,v
mov ah,2  
int 21h

end main
main endp    

补充说明:问题截图显示寄存器读取值异常。


问题原因与解决办法

  • ASCII码混淆
    int 21h的ah=02h功能是输出ASCII字符,不是直接显示十进制数字。变量里存的5是十进制数值(十六进制05h),对应ASCII字符是不可见控制符;而数字'5'的ASCII码是35h,必须把数值转换成对应ASCII码才能正确显示。

  • 数据段未初始化+程序未正常退出
    8086汇编必须初始化ds寄存器指向数据段,否则会读取到错误内存值(比如你看到的CD);另外代码缺少程序退出调用ah=4Ch的int 21h,导致执行到后续垃圾指令,引发异常。

  • 修正后的代码

.model small
.data
v db 5
.code
main proc
mov ax, @data
mov ds, ax  ; 初始化数据段寄存器

mov al, v
add al, 30h ; 把0-9的数值转为对应ASCII字符
mov dl, al
mov ah, 02h  
int 21h

mov ah, 4Ch ; 程序正常退出
int 21h
end main
main endp    

内容的提问来源于stack exchange,提问作者Mitul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 13:50:26