Ensamblador - Novato en ensamblador

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder