Problema: Nos dan un número decimal de 16 bits, tenemos que imprimir el número en formato binario
Ejemplos:
Input: d1 = 16 Output: 10000 Input: d1 = 7 Output: 111
Explicación:
- Cargue el valor almacenado en el registro
- Divide el valor por 2 para convertirlo a binario
- Empuje el resto en la pila
- aumentar el conteo
- Repita los pasos hasta que el valor del registro sea mayor que 0
- Hasta que el conteo sea mayor que cero
- POP la pila
- Agregue 48 al elemento superior para convertirlo en ASCII
- Imprime el carácter usando la interrupción
- Disminuye el conteo
Programa:
;8086 program to convert a 16 bit decimal number to binary .MODEL SMALL .STACK 100H .DATA d1 dw 16 .CODE MAIN PROC FAR MOV AX, @DATA MOV DS, AX ;load the value stored; in variable d1 mov ax, d1 ;convert the value to binary; print the value CALL PRINT ;interrupt to exit MOV AH, 4CH INT 21H MAIN ENDP PRINT PROC ;initialize count mov cx, 0 mov dx, 0 label1:; if ax is zero cmp ax, 0 je print1 ;initialize bx to 2 mov bx, 2 ;divide it by 2 ;to convert it to binary div bx ;push it in the stack push dx ;increment the count inc cx ;set dx to 0 xor dx, dx jmp label1 print1: ;check if count ;is greater than zero cmp cx, 0 je exit ;pop the top of stack pop dx ;add 48 so that it ;represents the ASCII ;value of digits add dx, 48 ;interrupt to print a ;character mov ah, 02h int 21h ;decrease the count dec cx jmp print1 exit : ret PRINT ENDP END MAIN
Producción:
10000
Nota: El programa no se puede ejecutar en un editor en línea, use MASM para ejecutar el programa y use dos box para ejecutar MASM, puede usar cualquier emulador 8086 para ejecutar el programa
Publicación traducida automáticamente
Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA