大三汇编题目,用MASM32尝试编译出错,请教如何改正这些错误
题目:查表求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,
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
请问该如何改正呢? 16位汇编请用masm编译,不要用MASM32
另外
MOV AL,X
MOV AX,0
ADD BX,AX
MOV Y,
改成
MOV AL,X
MOV AH,0
ADD BX,AX
MOV AX,
MOVY,AX xieglt 发表于 2020-10-21 21:51
16位汇编请用masm编译,不要用MASM32
另外
MOV AL,X
感谢解答。请问MASM和MASM32有什么区别呀。 幼稚鬼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位下的内存模式是平坦模式,不需要段寄存器。
十分感谢讲解!
页:
[1]