# ---------------------------------------
# limitazioni del sottoprogramma output
# al solo registro AL
# esempio di come stampare contenuto di
# un registro a 32 bit
# ---------------------------------------
# usato per verificare la MUL e i suoi
# registri per i risultati
# ---------------------------------------
# nell' esempio:
# %EAX * %EBX = %EDX_%EAX
#
# 0x00BB.00CC * 0xFFCC.AAFF = 0x00BA.DB4C.BF5D.4334
#
# tradotto in naturali:
# 12.255.436 * 4.291.603.199 = 52.595.468.342.739.764
# ---------------------------------------
.GLOBAL _main
.DATA
mess_eax: .ASCII "\nContenuto di EAX: \n\r"
mess_ebx: .ASCII "\nContenuto di EBX: \n\r"
mess_ecx: .ASCII "\nContenuto di ECX: \n\r"
mess_edx: .ASCII "\nContenuto di EDX: \n\r"
mess_esi: .ASCII "\nContenuto di ESI: \n\r"
mess_edi: .ASCII "\nContenuto di EDI: \n\r"
mess_ebp: .ASCII "\nContenuto di EBP: \n\r"
mess_esp: .ASCII "\nContenuto di ESP: \n\r"
alpha: .LONG 0x00aa11ff
.TEXT
_main: NOP
# MOVL alpha,%EBX
# MOV $0,%EBX
# PUSH %EBX
# MOV $mess_ebx,%EBX
# CALL outline
# POP %EBX
# MOV %EBX,%EAX
# CALL print_reg
PUSH %EBX
MOV $mess_eax,%EBX
CALL outline
POP %EBX
MOV $0x00BB00CC,%EAX
CALL print_reg
PUSH %EBX
MOV $mess_ebx,%EBX
CALL outline
POP %EBX
MOV $0xFFCCAAFF,%EBX
PUSH %EAX
MOV %EBX,%EAX
CALL print_reg
POP %EAX
MUL %EBX
PUSH %EBX
MOV $mess_eax,%EBX
CALL outline
POP %EBX
# verifico risultato parte bassa %EAX
CALL print_reg
PUSH %EBX
MOV $mess_edx,%EBX
CALL outline
POP %EBX
# verifico risultato parte alta %EDX
PUSH %EAX
MOV %EDX,%EAX
CALL print_reg
POP %EAX
CALL pause
fine: RET
# ------------------------------
# sottoprogramma di stampa
# ------------------------------
print_reg: PUSH %EAX
SHR $16,%EAX
# 16 bit piu alti del registro
PUSH %EAX
MOV %AH,%AL
CALL outbyte
POP %EAX
CALL outbyte
POP %EAX
# 16 bit piu bassi del registro
PUSH %EAX
MOV %AH,%AL
CALL outbyte
POP %EAX
CALL outbyte
CALL newline
fine_sott: RET
.INCLUDE "C:/GAS/utility"
Welcome to my blog about my personal experience on programming language, computer science engineering studies, on how to trouble solving hardware and software problem, with some personal solutions.
mercoledì 15 giugno 2011
moltiplicazione e stampa a video registri
Iscriviti a:
Commenti sul post (Atom)
0 commenti:
Posta un commento