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

如何在MASM611中无数据段实现8位二进制相加转十进制输出

8位二进制数相加并输出十进制结果的MASM汇编实现

以下是符合要求的完整汇编程序,全程使用寄存器存储数据,不使用数据段,基于你提供的读写字符基础程序扩展实现:

.MODEL SMALL

.STACK

.CODE
main proc
    ; 读取第一个8位二进制数,存入BL
    MOV CX, 8
    MOV BL, 0
input_first:
    CALL read_char
    CMP DL, CR
    JE input_first_end
    SUB DL, '0'
    SHL BL, 1
    OR BL, DL
    LOOP input_first
input_first_end:
    CALL cr_lf

    ; 读取第二个8位二进制数,存入BH
    MOV CX, 8
    MOV BH, 0
input_second:
    CALL read_char
    CMP DL, CR
    JE input_second_end
    SUB DL, '0'
    SHL BH, 1
    OR BH, DL
    LOOP input_second
input_second_end:
    CALL cr_lf

    ; 计算两数之和,结果存入AX
    MOV AX, 0
    MOV AL, BL
    ADD AL, BH
    ADC AH, 0

    ; 将十进制结果转换为字符输出(处理前导零)
    MOV CH, 0  ; 标记是否已输出非零数字,0=未输出
    ; 处理百位
    MOV CL, 100
    DIV CL     ; AL=百位数字,AH=余数
    CMP AL, 0
    JE check_tens
    ADD AL, '0'
    MOV DL, AL
    CALL write_char
    MOV CH, 1
check_tens:
    ; 处理十位
    MOV AL, AH
    MOV AH, 0
    MOV CL, 10
    DIV CL     ; AL=十位数字,AH=个位数字
    CMP CH, 1
    JNE check_tens_zero
    ADD AL, '0'
    MOV DL, AL
    CALL write_char
    JMP check_units
check_tens_zero:
    CMP AL, 0
    JE check_units
    ADD AL, '0'
    MOV DL, AL
    CALL write_char
    MOV CH, 1
check_units:
    ; 处理个位
    ADD AH, '0'
    MOV DL, AH
    CALL write_char
    CALL cr_lf

    ; 程序退出
    MOV AH, 4CH
    INT 21h
main endp

CR EQU 13
LF EQU 10

cr_lf proc
    PUSH DX
    MOV DL, CR
    CALL write_char
    MOV DL, LF
    CALL write_char
    POP DX
    RET
cr_lf endp

read_char proc
    PUSH AX
    MOV AH, 1
    INT 21h
    MOV DL, AL
    POP AX
    RET
read_char endp

write_char proc
    PUSH AX
    MOV AH, 2
    INT 21h
    POP AX
    RET
write_char endp
END main

关键说明

  • 输入处理:每次读取一个字符,判断是否为回车(支持提前结束输入),将字符'0'/'1'转换为数值后通过移位和或操作存入寄存器
  • 求和逻辑:使用ADD和ADC指令处理8位相加可能产生的进位,最终结果存入AX寄存器
  • 十进制输出:通过除法拆分百位、十位、个位,自动处理前导零问题,确保输出符合常规十进制阅读习惯

内容的提问来源于stack exchange,提问作者Elemér Úram Kalapós

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:47:25