Registro eax, y ax
Publicado por rosario (1 intervención) el 15/10/2009 04:40:40
tengo una duda si alguien la puede resolver se lo agradeceria:
donde esta ubicado el registro ax con respecto al registro eax, y con esto
dedusca porque no se muestra bien el dato almacenado en un tipo de datos dw
con una macro.
el primer programa es este
%include "macro.asm"
SEGMENT datos
linea1 DB "valor=%d", 10,13, 0
linea2 DB "valor=%s", 10,13, 0
valor1 DD 8000
valor2 DW 32000
valor3 DD 0
valor4 DB 223
valor5 DQ 7000000000
valor6 DB "rosario campos", 10,13, 0
SEGMENT code
extern _printf
global _main
_main:
MOV EAX, 0
MOV EAX, [valor1]
macprint1 linea1, EAX
MOV EAX, 0
MOV EAX, [valor2]
macprint1 linea1, EAX
MOV EAX, 0
MOV EAX, [valor3]
macprint1 linea1, EAX
MOV EAX, 0
MOV AL, [valor4]
macprint1 linea1, EAX
macprint valor6
ret
y el programa de la maco este
%macro macprint1 2
PUSHAD
PUSH Dword %2; valor
PUSH Dword %1; linea
CALL _printf
TIMES 2 ADD ESP, 4
POPAD
%endmacro
%macro macprint 1
PUSHAD
PUSH Dword %1; linea
CALL _printf
ADD ESP, 4
POPAD
%endmacro
donde esta ubicado el registro ax con respecto al registro eax, y con esto
dedusca porque no se muestra bien el dato almacenado en un tipo de datos dw
con una macro.
el primer programa es este
%include "macro.asm"
SEGMENT datos
linea1 DB "valor=%d", 10,13, 0
linea2 DB "valor=%s", 10,13, 0
valor1 DD 8000
valor2 DW 32000
valor3 DD 0
valor4 DB 223
valor5 DQ 7000000000
valor6 DB "rosario campos", 10,13, 0
SEGMENT code
extern _printf
global _main
_main:
MOV EAX, 0
MOV EAX, [valor1]
macprint1 linea1, EAX
MOV EAX, 0
MOV EAX, [valor2]
macprint1 linea1, EAX
MOV EAX, 0
MOV EAX, [valor3]
macprint1 linea1, EAX
MOV EAX, 0
MOV AL, [valor4]
macprint1 linea1, EAX
macprint valor6
ret
y el programa de la maco este
%macro macprint1 2
PUSHAD
PUSH Dword %2; valor
PUSH Dword %1; linea
CALL _printf
TIMES 2 ADD ESP, 4
POPAD
%endmacro
%macro macprint 1
PUSHAD
PUSH Dword %1; linea
CALL _printf
ADD ESP, 4
POPAD
%endmacro
Valora esta pregunta


0