Programación de estructuras de bucle en lenguaje ensamblador
supongamos cs: código, ds: datos
segmento de datos
bcd db 01h, 23h, 45h, 67h, 89h, 13h, 24h, 35h, 46h , 57h; código bcd
asc db 20 dup(0); almacenado aquí después de la conversión
los datos finalizan
segmento de código
inicio. : mov ax, data
mov ds, ax
mov cx, 10; número de ciclos
lea si, bcd si apunta al código bcd
p>
lea di, asc; di apunta a la posición de destino después de la conversión
siguiente: mov al, [si]; saca el código bcd
mov dl, al ; ponga dl para guardar
y al, 0fh; elimine los 4 bits superiores y procese el código bccd de orden inferior
o al, 30h; >
mov [di], al; almacenar en la ubicación de destino
inc di; modificar el puntero de dirección de destino
empujar cx para usar la instrucción de cambio, el registro cl; es necesario, por lo que el número de ciclos se inserta en la pila
push cx; p>
mov cl, 4; move 4 bits
shr dl, cl; bit alto del código bcd original al suelo 4 bits
o dl, 30h; convertir en código ascii
mov [di], dl; almacenar en la ubicación de destino
inc di; modificar el puntero de dirección
inc si; modificar el puntero de dirección
pop cx; mostrar el recuento de bucles
bucle siguiente; >
mov ax, 4c00h
int 21h
el código termina
fin y comienzo
¿Mu Xi? Me gusta este nombre