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

求助:使用TASM 1.4实现整数除法程序(栈警告+无输出问题)

TASM 1.4 整数除法程序实现与问题解决

问题说明

需使用TASM 1.4编写整数除法程序(例:14÷2=7),仅能通过记事本编写,无汇编语言基础,参考YouTube教程无果。现有代码编译时出现Warning: no stack警告,生成的exe运行无任何输出。

现有代码

DATA SEGMENT
A DB 9 
B DB 6 
C DB ? 
D DB ? 
DATA ENDS 
CODE SEGMENT 
ASSUME CS:CODE, DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV AL,A
MOV BL,B
DIV BL
MOV C,AL
MOV D,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START

问题分析

  1. no stack警告原因:TASM默认要求程序定义栈段,原代码缺少栈段定义,编译时会触发该警告。虽不影响程序执行,但规范写法需添加栈段。
  2. 无输出原因:原代码仅完成除法计算并将商、余数存入变量,但没有将结果输出到屏幕的逻辑。DOS程序需调用系统中断实现屏幕输出,且数字需转换为ASCII码才能正确显示(比如数字7的ASCII码是30H+7=37H)。

修改后的完整代码

; 定义栈段,解决no stack警告
STACK SEGMENT STACK
    DW 100H DUP(?)  ; 分配256字节的栈空间
STACK ENDS

DATA SEGMENT
    A DB 14        ; 被除数,可修改为其他8位整数
    B DB 2         ; 除数,需确保不为0
    C DB ?         ; 存储商
    D DB ?         ; 存储余数
    MSG1 DB '商:$' ; 提示文本1
    MSG2 DB 0AH,0DH,'余数:$' ; 提示文本2(换行后显示)
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE, DS:DATA, SS:STACK
START:
    ; 初始化数据段
    MOV AX, DATA
    MOV DS, AX

    ; 执行8位除法:AX = AL / BL,商存AL,余数存AH
    MOV AX, 0       ; 清空AX,确保AH为0(8位除法要求AH=0)
    MOV AL, A       ; AL = 被除数A
    MOV BL, B       ; BL = 除数B
    DIV BL          ; 执行除法:AL = A/B的商,AH = 余数
    MOV C, AL       ; 商存入变量C
    MOV D, AH       ; 余数存入变量D

    ; 输出"商:"提示
    MOV AH, 09H     ; DOS中断功能:输出字符串(以$结尾)
    LEA DX, MSG1    ; DX指向MSG1的地址
    INT 21H

    ; 输出商(将数字转换为ASCII)
    MOV AH, 02H     ; DOS中断功能:输出单个字符
    MOV DL, C       ; DL = 商的数值
    ADD DL, 30H     ; 转换为ASCII码(数字0-9对应ASCII 30H-39H)
    INT 21H

    ; 输出"余数:"提示(先换行)
    MOV AH, 09H
    LEA DX, MSG2
    INT 21H

    ; 输出余数
    MOV AH, 02H
    MOV DL, D
    ADD DL, 30H
    INT 21H

    ; 程序退出
    MOV AH, 4CH
    INT 21H
CODE ENDS
END START

编译与运行步骤

  1. 把上述代码复制到记事本,保存为divide.asm(注意保存类型选“所有文件”,编码选ANSI)
  2. 打开命令提示符,切换到文件所在目录,执行以下命令:
    • 编译:tasm divide.asm
    • 链接:tlink divide.obj
    • 运行:divide.exe

运行后会在屏幕上显示商和余数,比如示例中14÷2会显示:

商:7
余数:0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:20:41