Red de conocimientos turísticos - Información de alquiler - Código fuente ensamblador para convertir ocho números hexadecimales en números binarios

Código fuente ensamblador para convertir ocho números hexadecimales en números binarios

;------------------------------------------------

; convierte cualquier número sin signo dentro de los 16 bits (1 u 8 o 4 o n nlt;=16)

; o modifica el segmento de datos para convertir más bits

; >; p>

; Presione Esc para salir.

Presione Enter para iniciar la conversión

;------------------------------------- ---- -----------

Segmento de datos

Supongamos ds: datos

indata db 16 dup(20h)

inputinfo db 'Ingrese un hex=lt 16 bits:

errorinfo db 'Ingrese error, repita $'

resultinfo db 'El resultado es: $' <

newlineinfo db 0dh, 0ah, '$'

los datos terminan

--------------; ---- -------------------------------

;------- --- ------------------

segmento de código

asume cs: código

proc principal lejos

mov ax, data

mov ds, ax

mov es, ax

llamar a inputdata

llamar a hextobin

mov ah, 4ch

int 21h

main endp

-----------; ---- ----------------------- -

;-------------- ---- --------------------

proc hextobin cerca

mov ah, 9

mov dx , offset resultinfo

int 21h

mov si, offset indata

siguiente:

lodsb

mov bl , al; copia de seguridad de al primero, porque sub* cambiará al más tarde

cmp al, 20h

jz exit

cmp al, 3ah ; sémola

p>

jl sub1

cmp al, 47h; G

jl sub2

cmp al, 67h; p>

jl sub3

sub1:

sub al, 30h; juez 0--9

jmp comenzar

sub2 :

mov al, bl

sub al, 37h; juez A--F

jmp comenzar

sub3:

mov al , bl

sub al, 57h; juez a---f

jmp comenzar

comenzar:

mov cx, 4; cada 4 dígitos binarios puede representar 1 dígito hexadecimal

mov ah, 2; compruebe a su vez si los 4 ceros y unos inferiores en al son el propósito del bucle

movimiento

bl, al

mov bh, 8; 8h=1000b

show: < bl; Restaurar al

ror bh, 1000b desplazamiento a la derecha 1 bit; a 0100b

loop show

mov ah, 0

jmp next

salida: ret

hextobin endp

;----- ----------------------------------

;------------------------------------------

inputdata proc cerca

entrada:

mov ah, 9

mov dx, offset inputinfo

int 21h

mov di, offset indata

inchar:

mov ah, 1

int 21h

push ax

cmp al, 1bh; if Esc, exit

je quit

cmp al, 0dh if Enter, que significa finalizar la entrada, saltar a la conversión

je hex

cmp al, 67h tres intervalos condicionales

jnl showerr

cmp al, 61h

jnl start

cmp al, 47h

ducha jnl

cmp al, 41h

inicio jnl

cmp al, 3ah

ducha jnl

cmp al, 30h

inicio jnl

inicio:

hacha pop

mov ah, 0

stosb

jmp inchar

salir:

mov ah, 4ch

int 21h

hex: llamar a nueva línea

llamar a hextobin

ret

showerr:

llamar a nueva línea

Llamar a nueva línea

mov ah, 9

mov dx, offset errorinfo

int 21h

Llamar a nueva línea

p>

Llamar a nueva línea

jmp input

inputdata endp

------------- ----- -----------------------

;-------------- ---- ---------------------

procesamiento de nueva línea cerca de

mov dx, desplazamiento de nueva línea

mov ah, 9

int 21h

ret

final de nueva línea

;-------------------------------- --------

;-------------------------- ----- --- ---

el código termina

finaliza el principal