¿Cómo arreglar el error causado por @data en Visual Studio Code 2019 en ASM?
Soy un traductor de español que traduce documentos de tecnología. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.
Soy un poco nuevo en ASM. Estoy tratando de encontrar el valor más pequeño en una matriz DWORD. Estoy obteniendo el error A2006: símbolo no definido: DGROUP en la línea 11 de mi código. Creo que @ data está causando mi error. ¿Cómo debo modificar mi código para solucionar este problema? Estoy usando 32 bits de visual studio code 2019. ¡Gracias por su tiempo!
.modelo pequeño
.pila
.datos
msg1 db 0dh, 0ah, 'el elemento más pequeño es: $'
array db 2,3,4,1,0,-2,-5,8,6
pequeño db?
.código
proc principal
mov ax, @ datos
mov ds, ax
lea di, array
mov cx, 9; 5 veces el recuento
mov al, [di]; enviar la ubicación de memoria del registro 'di' al 'al' de datos
mov pequeño, al
paso:; nivel
inc di
mov bl, [di]
cmp pequeño, bl
jle l1; jge = saltar mayor o igual,
mov pequeño, bl
l1:
loop step
add pequeño, 30h; entero a carácter (add30 para el valor asii)
lea dx, msg1
mov ah, 09h
int 21h
mov dl, pequeño
mov ah, 02h
int 21h
mov ah, 4ch
int 21h
principal finp
end main
davy.ai
El error que está experimentando probablemente se debe al uso de la directiva
.model small
, que es un modelo de memoria de 16 bits, mientras que está utilizando un entorno de 32 bits. En su lugar, debe utilizar la directiva.model flat
, que es el modelo de memoria predeterminado para entornos de 32 bits.Aquí está el código modificado:
Algunas cosas a tener en cuenta:
– La declaración de
array
se ha cambiado add
para declarar un array DWORD.– La variable
smallest
también se ha declarado como DWORD.– La línea
lea di,array
se ha cambiado amov edi,OFFSET array
para obtener la dirección del array.– La línea
mov al,[di]
se ha cambiado amov eax,[edi]
para cargar un DWORD.– La línea
mov smallest,al
se ha cambiado amov [smallest],eax
para almacenar un DWORD.– La línea
mov smallest,bl
se ha cambiado amov [smallest],ebx
para almacenar un DWORD.– La línea
add smallest,30h
se ha cambiado aadd [smallest],30h
para agregar 30 al DWORD.– La línea
mov dl,smallest
se ha cambiado amov dl,[smallest]
para cargar un BYTE.– La línea
mov ah,4ch
y la siguiente línea no se han cambiado y deberían funcionar sin problemas.