Вы находитесь на странице: 1из 7

.

model small
.stack
.data
cad db 9 dup (' '),'$'
var1 db ?
num db ?
aux db ?

.code
.startup
mov var1,0 ;Residuo de cero
mov ah,01h ;Utilizado con la interrupcu?n siguiente
int 21h ;Interrupci?n para leer
sub al,30h ;Obtenci?n de valor real
mov num,al ;N?mero con que trabajaremos

mov al,num
mov bl,10 ;Movemos a bl 10
mul bl ;Multiplicamos 10 por el n?mero a convertir
mov aux,al ;Asignamos a aux el residuo

mov var1,0 ;Para segundo d?gito se repite


mov ah,01h
int 21h
sub al,30h
add aux,al ;Lo agregamos al n?mero anterior multiplicado por 10
mov bl,aux ;?ste ya no necesita ser multiplicado
mov num,bl ;El n?mero resultante a bl

mov ah,02h ;Imprimimos signo de igual


mov dl,'='
int 21h

mov SI,6 ;Comienzan los ciclos de divisi?n entre 2


bin: ;Uso de etiqueta

mov Ah,00h;Aseguramos residuo de 0


mov Al,num
mov Bl,2
div Bl
mov var1,Ah
mov num,Al

mov dl,var1
add dl,30h

mov cad[SI],dl;Concatenamos resultados


cmp num,1 ;Hacemos comparaci?n
dec SI
jne bin ;Indicamos volver a etiqueta bin o:
je salida ;Ir a etiqueta salir

cmp num,0 ;Comparaci?n con 0


jne bin
je salida

salida: ;Etiqueta de salida


mov dl,num ;Proceso para imprimir cadena final con n?mero binario
add dl,30h

mov cad[SI],dl

mov ah,09h
lea Dx,cad
int 21h
.exit
End
.model small
.stack 64
.data
inicio db 'Repetir Texto..',10,13,'$'
ingresar db 10,13,'Ingresa tu nombre', 10,13,'$'
nombre db 'Su nombre es: $'
repetir db 10,13,'Quiere repetir s/n?',10,13,'$'
;Declaracion del vector
vtext db 100 dup('$')
.code
mov ax,@data
MOV DS,AX
lea dx,inicio
mov ah,09
int 21h
lea dx,ingresar
mov ah,09
int 21h
;Iniciamos nuestro conteo de si en la posicion 0.
mov si,00h
leer:
mov ax,0000
mov ah,01h
int 21h
;Guardamos el valor tecleado por el usuario en la posicion si del vector.
mov vtext[si],al
inc si ;Incrementamos nuestro contador
cmp al,0dh ;Se repite el ingreso de datos hasta que se teclee un Enter.
ja leer
jb leer
lea dx,nombre
mov ah,09
int 21h
ver:
mov dx,offset vtext ;Imprime el contenido del vector con la misma instrucci?n de una cadena
mov ah,09h
int 21h
lea dx,repetir ;imprime si quiere ver de nuevo el texto escrito.
mov ah,09
int 21h
mov ah,01h
int 21h
cmp al,73h ;Si la tecla presiona es una s se repite la impresi?n del vector.
je ver

salir:
mov ah,4ch
int 21h end
.model small
.stack
.data

cad db 9 dup (' '),'$'


var1 db ?
num db ?
aux db ?

.code
.startup
mov var1,0 ;Residuo de cero
mov ah,01h ;Utilizado con la interrupcu?n siguiente
int 21h ;Interrupci?n para leer
sub al,30h ;Obtenci?n de valor real
mov num,al ;N?mero con que trabajaremos
mov al,num
mov bl,10 ;Movemos a bl 10
mul bl ;Multiplicamos 10 por el n?mero a convertir
mov aux,al ;Asignamos a aux el residuo
mov var1,0 ;Para segundo d?gito se repite
mov ah,01h
int 21h
sub al,30h
add aux,al ;Lo agregamos al n?mero anterior multiplicado por 10
mov bl,aux ;?ste ya no necesita ser multiplicado
mov num,bl ;El n?mero resultante a bl
mov ah,02h ;Imprimimos signo de igual
mov dl,'='
int 21h
mov SI,6 ;Comienzan los ciclos de divisi?n entre 2
bin: ;Uso de etiqueta
mov Ah,00h;Aseguramos residuo de 0
mov Al,num
mov Bl,2
div Bl
mov var1,Ah
mov num,Al
mov dl,var1
add dl,30h
mov cad[SI],dl;Concatenamos resultados
cmp num,1 ;Hacemos comparaci?n
dec SI
jne bin ;Indicamos volver a etiqueta bin o:
je salida ;Ir a etiqueta salir
cmp num,0 ;Comparaci?n con 0
jne bin
je salida
salida: ;Etiqueta de salida
mov dl,num ;Proceso para imprimir cadena final con n?mero binario
add dl,30h

mov cad[SI],dl

mov ah,09h
lea Dx,cad
int 21h
.exit
end

; --------------------------------------------
; Ecuacion=(a+c*b)/d-2*c,
; --------------------------------------------
.model small
.stack 100h
.data
a db 0
b db 0
c db 0
d db 0
result1 db ?
result2 db ?
message1 db "Equation: (a+c*b)/d-2*c a=$"
message2 db "b=$"
message3 db "c=$"
message4 db "d=$"
message5 db "Result=$"
.code
start: mov ax,@data
mov ds,ax
mov ax, seg message1
mov ds,ax
mov dx,offset message1
mov ah, 9h
int 21h
mov ah, 1h
int 21h
sub al,30h
mov a,al
mov ax, seg message2
mov ds,ax
mov dx,offset message2
mov ah, 9h
int 21h
mov ah, 1h
int 21h
sub al,30h
mov b,al

mov ax, seg message3


mov ds,ax
mov dx,offset message3
mov ah, 9h
int 21h
mov ah, 1h
int 21h
sub al,30h ;converting to real number
mov c,al

mov ax, seg message4 ;get d and save to a variable


mov ds,ax
mov dx,offset message4
mov ah, 9h
int 21h
mov ah, 1h
int 21h
sub al,30h ;converting to real number
mov d,al

mov al,a ; (a+c*b)


mul c
add al,a

push ax

mov al,c ;d-2*c


shl ax,2
sub d,al

pop bx

div bx ; div ax:bx

mov result1,al
mov result2,ah

add result1,30h
add result2,30h
mov al,result1
mov bl,result2

mov ax, seg message5


mov ds,ax
mov dx,offset message5
mov ah, 9h
int 21h
mov al,result1
mov bl,result2
mov dl, al
mov ah , 2h
int 21h
mov dl, bl
mov ah , 2h
int 21h

mov ax,4C00h
int 21h

end start

Вам также может понравиться