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

8086汇编64位求和程序(16位算术)结果异常问题排查

问题排查结果

你的程序计算逻辑完全正确,按照代码定义,两个64位数相加的结果确实应为2222 2222 2222 2222h,但你得到了错误输出,可能由以下原因导致:

  • 代码输入失误

    • 实际编写的代码中,num1或num2的数值可能被误写(比如把1111h写成1000h),直接导致相加结果为2000h。请再次检查数据段的定义,确保每个字都是1111h。
    • 若print_hex函数中的rol ax,4被误写为shl ax,4,会丢失高4位数据,最终输出类似2000的错误结果。
  • 输出结果误读
    你提到的错误输出2000 20000 2000 2000h中,20000大概率是相邻字输出时无分隔导致的视觉误判(比如22222222被看成22220222或20002000)。建议在输出每个字后添加空格分隔,便于清晰观察。

  • 汇编器或运行环境问题
    部分老旧汇编器可能对十六进制数解析异常,建议使用MASM/TASM等标准8086汇编器重新编译;DOSBox等模拟环境的内存冲突也可能导致数据被意外修改,可尝试重启环境后重新运行。


修正后的验证代码(添加空格分隔)

以下是添加了空格分隔的代码,可清晰输出结果:

.model small
.stack 100h

.data
    num1 dw 1111h, 1111h, 1111h, 1111h ; 第一个数
    num2 dw 1111h, 1111h, 1111h, 1111h ; 第二个数
    result dw 0, 0, 0, 0               ; 结果存储区
    msg db 'Result: $'                 ; 输出提示信息

.code
main:
    mov ax, @data
    mov ds, ax
    mov es, ax

    ; 加载第一个数的各字到寄存器
    mov ax, num1
    mov bx, num1+2
    mov cx, num1+4
    mov dx, num1+6

    ; 带进位相加
    add ax, num2
    adc bx, num2+2
    adc cx, num2+4
    adc dx, num2+6

    ; 存储结果
    mov result, ax
    mov result+2, bx
    mov result+4, cx
    mov result+6, dx

    ; 输出提示信息
    lea dx, msg
    mov ah, 09h
    int 21h

    ; 输出结果(带空格分隔)
    mov ax, result+6
    call print_hex
    call print_space
    mov ax, result+4
    call print_hex
    call print_space
    mov ax, result+2
    call print_hex
    call print_space
    mov ax, result
    call print_hex

    ; 程序退出
    mov ah, 4Ch
    int 21h

print_hex:
    ; 十六进制输出AX内容
    push ax
    push bx
    push cx
    push dx

    mov cx, 4

print_loop:
    rol ax, 4
    mov dl, al
    and dl, 0Fh
    add dl, '0'
    cmp dl, '9'
    jle print_char
    add dl, 7

print_char:
    mov ah, 02h
    int 21h
    loop print_loop

    pop dx
    pop cx
    pop bx
    pop ax
    ret

print_space:
    ; 输出空格分隔符
    push dx
    mov dl, ' '
    mov ah, 02h
    int 21h
    pop dx
    ret

end main

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:08:11