鱼C论坛

 找回密码
 立即注册
查看: 2968|回复: 4

[已解决]大三汇编题目,用MASM32尝试编译出错,请教如何改正这些错误

[复制链接]
发表于 2020-10-21 21:11:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:查表求0-15的平方值。
         
          表:0、1、4、9、16、25、36、49、64、81、100、121、144、169、196、225


代码:
DATA SEGMENT
X DB ?
TABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225
Y DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TABLE
MOV AL,X
MOV AX,0
ADD BX,AX
MOV Y,[BX]
MOV AH,4CH
INT 21H
CODE ENDS
END

点击assumble ASM file之后出现两个错误分别是:

D:\资料\MASM32\自学\test.asm(14) : error A2070: invalid instruction operands
D:\资料\MASM32\自学\test.asm(8) : error A2004: symbol type conflict

请问该如何改正呢?
最佳答案
2020-10-21 21:51:20
16位汇编请用masm编译,不要用MASM32
另外
MOV AL,X
MOV AX,0
ADD BX,AX
MOV Y,[BX]
改成
MOV AL,X
MOV AH,0   
ADD BX,AX
MOV AX,[BX]
MOV  Y,AX
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-21 21:51:20 | 显示全部楼层    本楼为最佳答案   
16位汇编请用masm编译,不要用MASM32
另外
MOV AL,X
MOV AX,0
ADD BX,AX
MOV Y,[BX]
改成
MOV AL,X
MOV AH,0   
ADD BX,AX
MOV AX,[BX]
MOV  Y,AX
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-21 22:08:04 From FishC Mobile | 显示全部楼层
xieglt 发表于 2020-10-21 21:51
16位汇编请用masm编译,不要用MASM32
另外
MOV AL,X

感谢解答。请问MASM和MASM32有什么区别呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-22 08:53:00 | 显示全部楼层
幼稚鬼0812 发表于 2020-10-21 22:08
感谢解答。请问MASM和MASM32有什么区别呀。

简单点说,
如果你写的是DOS下的运行的程序,请用MASM
如果你写的是WINDOWS下运行的程序,请用MASM32

复杂点说,DOS系统是16位的,只支持16位寄存器,如AX,BX,CX,DX等等
只能访问16位的内存,即 2的16次方,65536字节,也就是64K
但是,16位下有段寄存器,结合段寄存器CS,DS,ES,SS, 就能访问1M内存。

windows系统是32位的,支持32位的寄存器,如eax,ebx,ecx,edx 等等
可以访问32位的内存,即2的32次访,4GB。
而且,32位下的内存模式是平坦模式,不需要段寄存器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-22 11:44:33 From FishC Mobile | 显示全部楼层
十分感谢讲解!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-28 18:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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