一个汇编程序,不知为何错,请指点

jist12321 2006-02-08 04:56:49
以下是我的汇编源程序,跟出错信息
TITLE MODULE1

DATA SEGMENT
STRING DB 'HO','$'
DATA ENDS

STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS

PUBLIC STRING

EXTRN DISPLAY: FAR

COSEG SEGMENT
ASSUME CS:COSEG, DS:DATA, SS:STACK1

START: MOV AX, STRING
MOV DS, AX
CALL DISPLAY
MOV AH, 4CH
INT 21H
COSEG ENDS
END START

TITLE MODULE2
PUBLIC DISPLAY
EXTRN STRING:BYTE

COSEG1 SEGMENT
DISPLAY PROC FAR

MOV DX, OFFSET STRING
MOV AH, 9
INT 21H
ret
DISPLAY endp
COSENG1 ENDS
END
编译后出错为:
Assembling: F:\Program Files\RadASM\Masm\Projects\linux\linux.asm
F:\Program Files\RadASM\Masm\Projects\linux\linux.asm(19) : error A2070: invalid instruction operands
F:\Program Files\RadASM\Masm\Projects\linux\linux.asm(21) : error A2004: symbol type conflict
F:\Program Files\RadASM\Masm\Projects\linux\linux.asm(25) : warning A4023: with /coff switch, leading underscore required for start address : START
请各位指点,谢谢了先
...全文
227 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jist12321 2006-02-11
  • 打赏
  • 举报
回复
原来如此啊,懂了,谢谢高人的指点.
zara 2006-02-10
  • 打赏
  • 举报
回复
能的. 自己设置数据段和堆栈段, 使用 16 位寄存器和 int21h, 这些都是的. 因为, 在 Win32 所使用的 flat 内存模式下, 各段的设置是由加载模块根据程序的定义自动完成的, 一般不需要自己改动. Win32 下当然也是可以是 16 位寄存器的, 但是, 这应该是属于特殊情况, 多数是使用 32 位的, 当然也有使用 8 位的. 其实, 在 dos16 下, 只要 cpu 是 386 及以上级别的, 也是可以使用 32 位通用寄存器的, 不需要 32 位模式才可以. 无论是在 32 下使用 16 位的寄存器, 还是在 16 位下使用 32 位的寄存器, 都会被编译程序在相关的指令前面加上数据大小的前缀指令, 这样才能让 cpu 正确地识别所对应的操作数的大小, 这是因为各个寄存器在不同的操作数大小时的编码是重叠的, 这个具体的可以参考指令编码的细节. 至于使用 int21h, 这个在 Win32 下是不能的, 对一般的应用程序而言, 在 dos 下用来实现各种操作的中断功能调用, 在 Windows 下被各种 Windows 的 API 函数取代了, 它们在作用和角色上是类似的.
jist12321 2006-02-10
  • 打赏
  • 举报
回复
那从我上面的那个汇编程序中,能不能在不运行的前提下光看代码就能看出它是16位的,而不是32位的?
jist12321 2006-02-09
  • 打赏
  • 举报
回复
非常感谢你的回答,不过我想再问一下,怎么区分我的汇编是32位的还是16位的,有什么区别吗?如果有资料的话,能不能发些给我,我的email是jist12321@gmail.com, 再次谢谢
jist12321 2006-02-09
  • 打赏
  • 举报
回复
原来如此,谢谢这位高人了,以后有问题的话,还请再多多指点.
zara 2006-02-09
  • 打赏
  • 举报
回复
这个问题还真不怎么好回答. 能够在纯 dos 环境下运行的, 寻址方式为 16 位的就是 dos16 类的; 能够在 Windows 环境下运行, 采用 32 为寻址模式, 经由 Windows API 函数实现功能的就是 Win32 类的程序吧. 资料上, 倒是没有特别针对这一点的
zara 2006-02-08
  • 打赏
  • 举报
回复
你的这个是 dos16 类型的程序, 不能用 Masm32 类的编译链接程序来做. 应该下载 Masm5/6.0 来进行汇编链接. 此外, 除了 COSENG1 ENDS 有个笔误, 应该是 COSEG1 ENDS 外, 没有问题吧
Dummyz 2006-02-08
  • 打赏
  • 举报
回复
TITLE MODULE1


DATA SEGMENT
STRING DB 'HO','$'
DATA ENDS

STACK1 SEGMENT PARA STACK 'STACK'
DW 20H DUP(0)
STACK1 ENDS

PUBLIC STRING

EXTRN DISPLAY: FAR

COSEG SEGMENT
ASSUME CS:COSEG, DS:DATA, SS:STACK1
START:
mov ax, DATA
mov ds, ax

CALL DISPLAY

MOV AH, 4CH
INT 21H
COSEG ENDS
END START
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TITLE MODULE2

PUBLIC DISPLAY
EXTRN STRING: BYTE

COSEG1 SEGMENT
DISPLAY PROC FAR
MOV DX, OFFSET STRING
MOV AH, 9
INT 21H
ret
DISPLAY endp
COSEG1 ENDS
END
jist12321 2006-02-08
  • 打赏
  • 举报
回复
程序中有点错误我重新发一下
TITLE MODULE1

DATA SEGMENT
STRING DB 'HOW DO YOU DO!','$'
DATA ENDS

STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS

PUBLIC STRING

EXTRN DISPLAY: FAR

COSEG SEGMENT
ASSUME CS:COSEG, DS:DATA, SS:STACK1

START: MOV AX, DATA
MOV DS, AX
CALL DISPLAY
MOV AH, 4CH
INT 21H
COSEG ENDS
END START

TITLE MODULE2
PUBLIC DISPLAY
EXTRN STRING:BYTE

COSEG1 SEGMENT

DISPLAY PROC FAR

MOV DX, OFFSET STRING
MOV AH, 9
INT 21H
ret
DISPLAY endp
COSENG1 ENDS
END
先谢过
jist12321 2006-02-08
  • 打赏
  • 举报
回复
顺便再说一下,我用的工具是masm32 8 跟RadASM
文末附数据集可视化效果图。 【数据集概况】 · 检测类别(中文):[矿石0(0), 矿石1(1), 矿石10(10), 矿石11(11), 矿石2(2), 矿石3(3), 矿石4(4), 矿石7(7), 矿石8(8), 矿石9(9), 模组矿石(modore), 普通矿石(ore)] · 训练集:1383 张 · 验证集:130 张 · 测试集:66 张 · 总计:1579 张 该数据集聚焦于典型游戏内资源采集场景,以俯视角呈现冰雪覆盖的虚拟地形环境,包含多种类型矿石与特殊资源点。数据集中各类矿石分布密集且形态多样,标注清晰,能够有效支持对复杂背景下的小目标识别与分类任务,具备较高的训练价值和实际应用潜力。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9185** mAP50-95 | 0.5810 Precision | 0.9468 Recall | 0.8648 train/box_loss | 1.2381 train/cls_loss | 0.4081 val/box_loss | 1.5489 val/cls_loss | 0.5361 【训练过程分析】 100 轮训练后 mAP50 达到 0.9185,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。但 mAP50-95 为 0.5810,和 mAP50 差距 0.34,定位精度仍有优化空间。 【模型性能评估】 Precision 0.9468、Recall 0.8648...
内容概要:本文提出一种融合细菌觅食优化算法(BFOA)、蚁群算法(ACO)与长短期记忆网络(LSTM)的混合智能算法A-ACO-LSTM,用于解决无人机在复杂三维环境中的路径规划问题。通过三维栅格地图建模,结合LSTM对航段风险的预测能力、BFOA在连续空间中的全局优化能力和ACO在离散栅格路径上的搜索优势,构建了“先学习—再优化—后修正”的协同框架。系统综合考虑路径长度、障碍碰撞、飞行风险、转弯平滑度和垂直爬升等因素,设计多目标归一化代价函数与动态权重机制,在保证飞行安全的前提下提升路径质量。代码基于MATLAB实现,包含环境生成、LSTM训练、BFOA连续优化、ACO离散搜索、路径融合与三维可视化等模块,支持参数配置、结果复现与工程扩展。; 适合人群:具备一定算法基础和MATLAB编程经验,从事无人机路径规划、智能优化算法或人工智能应用研究的研发人员及研究生。; 使用场景及目标:①应对城市楼宇、山地地形等复杂三维障碍环境下的无人机自主导航;②实现低能耗、高安全性、强鲁棒性的飞行路径规划;③为多源算法融合与深度学习辅助优化提供技术参考与实现范例; 阅读建议:建议结合完整代码与GUI界面深入理解各模块交互逻辑,重点关注LSTM风险预测与两种群智能算法的耦合机制,可通过更换训练数据、调整环境参数进行二次开发与性能测试。

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧