Novato en ensamblador
Publicado por Kristen (1 intervención) el 01/10/2005 00:19:57
Bueno, me gustaría saber si me puede dar una mano con esto del ensamblador, ya que hasta ahora tengo 3 semanas queriendo estudiar y es hora que no comprendo nada de este complicado lenguaje, y en estos momentos ando trabajando una programa que al darle 2 dígitos de un año te lo corrije y te la pone como debe de ser, es decir, si entra un 00 a 09 la máquina debe mostrar una 2000 a 2009, y si entra de 10 a 99 debe agragar un 19 para que quede 1999 y cosas por el estilo
por el momento mi método de trabajar el programa, esque lo que sea ingresado se le reste 10 y si el resultado es mayor a 1 se suma al número ingresado 1900, en caso contrario se agrega un 2000, en otras palabras:
resta = digitos - 10
if (resta >= 1)
anio_convertido = digitos + 1900
else
anio_convertido = digitos + 2000
aqui esta el código en ensamblador
.model small
.stack
.data
digitos db 2 DUP(?)
dosmil db '20'
milnov db '19'
ent DB 13,10,'$'
resta db '10'
msg1 db 'Programa que corrije el anio en base a 2 dígitos', '$'
msg2 db 'Introduce el sufijo del anio a corregir', '$'
msgfinal db 'El anio corregido es: ', '$'
.code
inicio proc
call direccionar
call cls
call pos_cur
xor dx, dx
lea dx, msg1
call imprimir
call salto
call salto
xor dx, dx
lea dx, msg2
call imprimir
call salto
call salto
mov ah, 0ah
int 21h
mov digitos, al
sub al, resta
cmp al, '0'
jle mil_novecientos
call salto
call salto
xor dx, dx
lea dx, msgfinal
call imprimir
lea dx, dosmil
call imprimir
lea dx, digitos
call salir
mil_novecientos:
call salto
call salto
xor dx, dx
lea dx, msgfinal
call imprimir
lea dx, milnov
call imprimir
lea dx, digitos
call salir
inicio endp
direccionar proc
mov ax, @data
mov es, ax
mov ds, ax
ret
direccionar endp
imprimir proc
mov ah, 09h
int 21h
ret
imprimir endp
cls proc
mov ax,0600h
mov bh,07
mov cx,0000
mov dx,184fh
int 10h
ret
cls endp
pos_cur proc
mov ah,02h
mov bh,00
mov dx,0000
int 10h
ret
pos_cur endp
salto proc
mov ah,09h
lea dx,ent
int 21h
ret
salto endp
salir proc
mov ah, 4ch
int 21h
ret
salir endp
end
espero poder recibir su ayuda y muchas gracias
por el momento mi método de trabajar el programa, esque lo que sea ingresado se le reste 10 y si el resultado es mayor a 1 se suma al número ingresado 1900, en caso contrario se agrega un 2000, en otras palabras:
resta = digitos - 10
if (resta >= 1)
anio_convertido = digitos + 1900
else
anio_convertido = digitos + 2000
aqui esta el código en ensamblador
.model small
.stack
.data
digitos db 2 DUP(?)
dosmil db '20'
milnov db '19'
ent DB 13,10,'$'
resta db '10'
msg1 db 'Programa que corrije el anio en base a 2 dígitos', '$'
msg2 db 'Introduce el sufijo del anio a corregir', '$'
msgfinal db 'El anio corregido es: ', '$'
.code
inicio proc
call direccionar
call cls
call pos_cur
xor dx, dx
lea dx, msg1
call imprimir
call salto
call salto
xor dx, dx
lea dx, msg2
call imprimir
call salto
call salto
mov ah, 0ah
int 21h
mov digitos, al
sub al, resta
cmp al, '0'
jle mil_novecientos
call salto
call salto
xor dx, dx
lea dx, msgfinal
call imprimir
lea dx, dosmil
call imprimir
lea dx, digitos
call salir
mil_novecientos:
call salto
call salto
xor dx, dx
lea dx, msgfinal
call imprimir
lea dx, milnov
call imprimir
lea dx, digitos
call salir
inicio endp
direccionar proc
mov ax, @data
mov es, ax
mov ds, ax
ret
direccionar endp
imprimir proc
mov ah, 09h
int 21h
ret
imprimir endp
cls proc
mov ax,0600h
mov bh,07
mov cx,0000
mov dx,184fh
int 10h
ret
cls endp
pos_cur proc
mov ah,02h
mov bh,00
mov dx,0000
int 10h
ret
pos_cur endp
salto proc
mov ah,09h
lea dx,ent
int 21h
ret
salto endp
salir proc
mov ah, 4ch
int 21h
ret
salir endp
end
espero poder recibir su ayuda y muchas gracias
Valora esta pregunta
0