找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1147|回复: 7
收起左侧

程序报错 把自已学号分成两个多位十进制数相加

[复制链接]
ID:1048351 发表于 2023-10-21 22:39 | 显示全部楼层 |阅读模式
这个是我自己写的,
DSEG SEGMENT

DATA1 DD 202317H

DATA2 DD 150636H

SUM DW ?

DSEG ENDS

SSEG SEGMENT STACK

DW 256 DUP(?)

SSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG, SS: SSEG

START: MOV AX, DSEG

MOV DS, AX

LEA SI, DATA1

MOV AX, [SI]

MOV DI, DATA2

MOV CX, [DI]

LEA BX, SUM

ADD AX, CX

MOV [BX],AX

MOV AX, [SI+2]

MOV cX, [DI+2]

ADC AX, CX

MOV [BX+2], AX

MOV AH, 4CH

INT 21H

CSEG ENDS

END START


但是DOSBOX debug会报2错误,因为还是一个学生,希望可以帮忙更正一下错误,谢谢各位
回复

使用道具 举报

ID:97554 发表于 2023-10-22 09:08 | 显示全部楼层
不懂汇编,莫非你错在了一个大小写的字母?
回复

使用道具 举报

ID:1048351 发表于 2023-10-22 10:23 | 显示全部楼层
杨雪飞 发表于 2023-10-22 09:08
不懂汇编,莫非你错在了一个大小写的字母?

应该不是的,我重新打了一遍,就是显示编译不成功,其他都是对的
回复

使用道具 举报

ID:526543 发表于 2023-10-22 15:58 | 显示全部楼层
在 LEA SI, DATA1 和 MOV AX, [SI] 之间需要添加一行 MOV SI, OFFSET DATA1 来正确初始化 SI 寄存器。这样你才能正确地将数据加载到 AX 中。  在 MOV CX, [DI] 和 MOV cX, [DI+2] 之前需要添加 MOV DI, OFFSET DATA2 以初始化 DI 寄存器。  在 MOV [BX],AX 和 MOV [BX+2], AX 之前需要添加 MOV BX, OFFSET SUM 以初始化 BX 寄存器。
回复

使用道具 举报

ID:883242 发表于 2023-10-22 16:48 | 显示全部楼层
debug不认识伪指令,只认实际指令。要么用MASM编译,要么学学debug的正确用法。
回复

使用道具 举报

ID:1048351 发表于 2023-10-22 19:58 | 显示全部楼层
Hephaestus 发表于 2023-10-22 16:48
debug不认识伪指令,只认实际指令。要么用MASM编译,要么学学debug的正确用法。

我就是先用的masm,然后再link ,最后debug .1-1exe的
回复

使用道具 举报

ID:883242 发表于 2023-10-23 18:26 | 显示全部楼层
1235678978 发表于 2023-10-22 19:58
我就是先用的masm,然后再link ,最后debug .1-1exe的

你的程序这么简单直接用debug写就行了,40年前我用过吴晓君CCBIOS213汉卡,里面的程序就是用debug写的,毅力惊人。
回复

使用道具 举报

ID:97554 发表于 2024-1-22 17:24 | 显示全部楼层
在 MOV AX, DSEG 这一行中,你试图将段地址直接移动到 AX 寄存器中,但这是不正确的。你应该使用 MOV AX, DSEG 来获取数据段的段地址。
在 MOV [BX],AX 这一行中,你正在尝试将 AX 寄存器中的值直接存储到偏移地址为 SUM 的内存位置。这将导致错误。你应该使用 MOV [BX], AX 来将 AX 寄存器的值存储到偏移地址为 SUM 的内存位置。
在 MOV cX, [DI+2] 这一行中,cX 应该是 CX。
在 MOV [BX+2], AX 这一行中,[BX+2] 应该是 [BX]。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表