Assembly 我试图在masm32中制作一个程序,但在组装时遇到不同的错误。如何解决masm32中的错误a2022? 记录SW BSY:1、C3:1、TOP:3、C2:1、C1:1、C0:1、IT:1、X:1、P:1、U:1、O:1、Z:1、DE:1、I:1 rc EQU 13;德卡罗德雷托诺酒店 nl EQU 10;新莱尼亚证券交易所 ClaveFin数据库0 saludo DB“在suma、la resta和el producto y的社区中开展项目” DB“el cociente”,rc,nl DB“punto flotante的诺梅罗斯酒店” DB“美国电力公司80387”,rc,nl DB“formato:[+/-][.][E/E][+/-]”,rc,nl,0 RepCPU DB“联合国80386号决议所要求的程序”,北爱尔兰共和国,0 A DD 99.98999264;4字节准实sencillo B DD 17.01480361;迪斯蒂诺酒店 suma DD 0;苏马恩BCD resta DD 0;伯明翰酒店 多DD 2 dup(0) ResSuma DB 26 dup(0);苏马结果酒店 ResResta DB 26 dup(0);resultado de la resta酒店 CadSuma DB“La suma es…”,0 Cadrista DB“La resta es.:”,0 2011年4月DB“Teclear primer número real…”,0 4月2日DB“Teclear segundo número real…”,0 ResMulti DB 26 dup(0) CadMulti DB“El producto es…”,0 CadCociente DB“El-Cociiente es…”,0 ResCociente数据库26重复(0) .代码 Extron atof:near,ftoa:near,SacaCadena:near,SacaCadena2:near EXTRN Nuevalinea:近,cpu:近,Inicia87:近 恩特拉: mov-ax,@data;伊尼西亚酒店 mov-ds,ax;数据段 方案A: 斧头 称之为努瓦琳娜;萨尔塔利尼亚酒店 调用cpu;因达加蒂波德酒店 cmp-ax,386h;联合国80386号决议 jae L10 L05: mov di,偏移量RepCPU 叫萨卡卡德纳;萨尔德拉酒店 mov-ah,4ch;多斯函数 int 21h;帕拉萨利尔 L10: mov-ax,0000h 打电话给Inicia87 jnz L05 mov di,偏移量saludo;教规 打电话给萨卡卡德纳 打电话给NuevaLinea mov di,偏移量约为1;皮德底漆努梅罗 打电话给萨卡卡德纳 mov啊,0ah
这是我的代码标签L05给了我一个错误:指令操作数必须是相同的大小-不是它所指的浮点加法、减法、乘法和除法程序,它不可能是您的全部代码。Assembly 我试图在masm32中制作一个程序,但在组装时遇到不同的错误。如何解决masm32中的错误a2022? 记录SW BSY:1、C3:1、TOP:3、C2:1、C1:1、C0:1、IT:1、X:1、P:1、U:1、O:1、Z:1、DE:1、I:1 rc EQU 13;德卡罗德雷托诺酒店 nl EQU 10;新莱尼亚证券交易所 ClaveFin数据库0 saludo DB“在suma、la resta和el producto y的社区中开展项目” DB“el cociente”,rc,nl DB“punto flotante的诺梅罗斯酒店” DB“美国电力公司80387”,rc,nl DB“formato:[+/-][.][E/E][+/-]”,rc,nl,0 RepCPU DB“联合国80386号决议所要求的程序”,北爱尔兰共和国,0 A DD 99.98999264;4字节准实sencillo B DD 17.01480361;迪斯蒂诺酒店 suma DD 0;苏马恩BCD resta DD 0;伯明翰酒店 多DD 2 dup(0) ResSuma DB 26 dup(0);苏马结果酒店 ResResta DB 26 dup(0);resultado de la resta酒店 CadSuma DB“La suma es…”,0 Cadrista DB“La resta es.:”,0 2011年4月DB“Teclear primer número real…”,0 4月2日DB“Teclear segundo número real…”,0 ResMulti DB 26 dup(0) CadMulti DB“El producto es…”,0 CadCociente DB“El-Cociiente es…”,0 ResCociente数据库26重复(0) .代码 Extron atof:near,ftoa:near,SacaCadena:near,SacaCadena2:near EXTRN Nuevalinea:近,cpu:近,Inicia87:近 恩特拉: mov-ax,@data;伊尼西亚酒店 mov-ds,ax;数据段 方案A: 斧头 称之为努瓦琳娜;萨尔塔利尼亚酒店 调用cpu;因达加蒂波德酒店 cmp-ax,386h;联合国80386号决议 jae L10 L05: mov di,偏移量RepCPU 叫萨卡卡德纳;萨尔德拉酒店 mov-ah,4ch;多斯函数 int 21h;帕拉萨利尔 L10: mov-ax,0000h 打电话给Inicia87 jnz L05 mov di,偏移量saludo;教规 打电话给萨卡卡德纳 打电话给NuevaLinea mov di,偏移量约为1;皮德底漆努梅罗 打电话给萨卡卡德纳 mov啊,0ah,assembly,x86-16,masm32,Assembly,X86 16,Masm32,这是我的代码标签L05给了我一个错误:指令操作数必须是相同的大小-不是它所指的浮点加法、减法、乘法和除法程序,它不可能是您的全部代码。.model指令在哪里?.data指令?END指令?MASM32是否默认生成32位可执行文件?如果是这样的话,指针将是32位的,也许这就是为什么它抱怨将地址mov放入16位寄存器的原因? RECORD SW BSY:1,C3:1,TOP:3,C2:1,C1:1,C0:1,IT:1,X:1,P:1,U:1,O:1,Z:1,DE:1,I:1 rc
.model
指令在哪里?.data
指令?END
指令?MASM32是否默认生成32位可执行文件?如果是这样的话,指针将是32位的,也许这就是为什么它抱怨将地址mov
放入16位寄存器的原因?
RECORD SW BSY:1,C3:1,TOP:3,C2:1,C1:1,C0:1,IT:1,X:1,P:1,U:1,O:1,Z:1,DE:1,I:1
rc EQU 13 ;ASCII de retorno de carro
nl EQU 10 ;ASCII de nueva línea
ClaveFin DB 0
saludo DB "Este programa encuentra la suma, la resta, el producto y"
DB "el cociente",rc,nl
DB "de dos números de punto flotante."
DB "Usa el coprocesador 80387.",rc,nl
DB "formato: [+//-]<dígito(s)>[.]<dígito(s)>[E/e][+/-]<dígitos>",rc,nl,0
RepCPU DB "El programa requiere por lo menos un 80386 con coprocesador",rc,nl,0
A DD 99.98999264 ;4 bytes para real sencillo
B DD 17.01480361 ;ídem para destino
suma DD 0 ;suma en BCD
resta DD 0 ;resta en BCD
multi DD 2 dup (0)
ResSuma DB 26 dup (0) ;resultado de la suma
ResResta DB 26 dup (0) ;resultado de la resta
CadSuma DB "La suma es…….: ",0
CadResta DB "La resta es……..: ",0
Apr1er DB "Teclear primer número real…:",0
Apr2do DB "Teclear segundo número real…:",0
ResMulti DB 26 dup (0)
CadMulti DB "El producto es…: ",0
CadCociente DB "El cociente es….: ",0
ResCociente DB 26 dup (0)
.CODE
EXTRN atof:near,ftoa:near,SacaCadena:near,SacaCadena2:near
EXTRN Nuevalinea:near,cpu:near,Inicia87:near
Entra:
mov ax,@data ;inicia registro
mov ds,ax ;de segmento de datos
programa:
mov es,ax
call NuevaLinea ;salta línea
call cpu ;indaga tipo de CPU
cmp ax,386h ;por lo menos un 80386
jae L10
L05:
mov di,offset RepCPU
call SacaCadena ;avisa que saldrá
mov ah,4ch ;función de DOS
int 21h ;para salir
L10:
mov ax,0000h
call Inicia87
jnz L05
mov di,offset saludo ;bienvenida e instrucciones
call SacaCadena
call NuevaLinea
mov di,offset Apr1er ;pide primer número
call SacaCadena
mov ah,0ah