El presente libro presenta los prefijos comunes que se utilizan para que el espacio de almacenamiento de un registo crezca todo en funcion a la arquitectura de su procesador
https://drive.google.com/open?id=1Qhvkt0qBVXY7uCSqbczoYqDgRcWsdY0B
lunes, 18 de febrero de 2019
Unidad No.1-Tabla de registros de proposito general
Nota: La tabla indica el prefijo que se debe de agregar al registro para poder tener una mayor capacidad de almacenamiento de valores
Unidad No.1-Programa que hace una multiplicación en lenguaje ensamblador
Link del archivo: https://drive.google.com/open?id=1sU8vESOaOezBtJ9G-ednDrslHOMErxuc
Ejecución del programa:
Nota: Se hace la multiplicación de 80 x 100 esto es 8,000 en decimal y 1F40 en hexadecimal
Código:
org 100h
mov ax,80
mov bx,100
mul bx
ret
martes, 12 de febrero de 2019
Unidad No.1-Programa que te evalua si aprobaste o reprobaste dependiendo su calificación
Link del archivo: https://drive.google.com/open?id=1sCEzVI9IfkcoZSHj_z4InYgMXCmWwSzF
Ejecución del programa:
Código:
org 100h
.model small
.stack 64
.data ;seccion de variables
msg1 db "Dame una calificacion (seguida de un enter):$"
aprobado db 13,10, "Aprobado$" ;13 es salto de linea y 10 es salto de carro
reprobado db 13,10, "Reprobado$"
var1 dw ?,"$" ;variable data write
var2 dw ?,"$"
var3 dw ?,"$"
.code ;inicia el segmento de codigo
resultado proc far ;declaracion de funcion
mov ax, @data ;como inicio
mov ds, ax
;------------desplegar primer mensaje
mov ah,09 ;inicio de mensaje
lea dx,msg1
int 21h
;------------pedir un caracter
mov ah,01
int 21h ;parpadea el cursor
mov var1,ax
;------------pedir segundo caracter
mov ah,01
int 21h ;parpadea el cursor
mov var2,ax
;------------pedir un caracter
mov ah,01
int 21h ;parpadea el cursor
mov var3,ax
;------------momento de evaluar
cmp al,13 ;compara con el enter
je continue ;salto si se cumple la condicion igual a 13
jmp mayor
;inicia funcion
continue:
mov ax, var1 ;valor de var1 se va a reg ax
cmp al,037h
jge mayor ;salta si es mayor o igual
jmp menor ;si no se cumplio se va a funcion menor
mayor:
mov ah,09
lea dx, aprobado
int 21h
jmp salir
menor:
mov ah,09
lea dx, reprobado
int 21h
jmp salir
salir:
mov ax, 4ch
int 21h
resultado endp
end
lunes, 11 de febrero de 2019
Unidad No.1-Clase 11-02-18
Se volvio a retomar el ejemplo del video, especificamente la parte final donde se compila el programa dentro del cmd
Todo programa hecho en lenguaje ensamblador tiene extension .asm
viernes, 8 de febrero de 2019
Unidad No.1-Suma, resta, multiplicación y division de dos numeros de un digito
Link del archivo: https://drive.google.com/open?id=1yv0TaOaMtsVDw8GO9LvXGQtIGH9OxhKw
Ejecución del programa:
Código:
; suma, resta, multiplicacion y division sin tomar en cuenta el acarreo
; el 13,10 es un salto de linea
.model small
.stack 100
.data
msj1 db 'Numero 1: ','$'
msj2 db 13,10,'Numero 2: ','$'
msj3 db 13,10,'Suma: ','$'
msj4 db 13,10,'Resta: ','$'
msj5 db 13,10,'Multiplicacion: ','$'
msj6 db 13,10,'Division: ','$'
linea db 13,10,'$'
var1 db 0
var2 db 0
.code
.startup
call limpia
mov ah,09h
lea dx, msj1 ;desplegar numero 1:
int 21h
call leer ;lee primer numero
sub al,30h ;restar 30h para obtener el numero
mov var1,al ;lo guardo en var1
mov ah,09h
lea dx, msj2 ;desplegar numero 2:
int 21h
call leer ;lee segundo numero
sub al,30h ;restar 30h para obtener segundo valor
mov var2,al ;guardar en var2
mov bl,var2 ;mover a bl
;******************* SUMA
add bl,var1 ; realizo la suma de var2(bl) y var1 y el resultado queda en bl
mov ah,09h
lea dx,msj3 ;imprimir suma
int 21h
mov dl,bl ;pongo en dl el numero a imprimir var2(bl)
add dl,30h ; agrego 30h para obtener el caracter
mov ah,02h ;imprime un caracter
int 21h
;******************RESTA
mov bl,var1
sub bl,var2
mov ah,09h
lea dx,msj4 ;desplegar resta:
int 21h
mov dl,bl ;mover resta a dl para imprimir
add dl,30h ;sumar 30 para obtener caracter
mov ah,02h ;imprimir un caracter
int 21h
;******************MULTIPLICACION
mov ah,09h
lea dx,msj5 ;desplegar mult
int 21h
mov al,var1
mov bl,var2
mul bl ;mult al=al*bl
mov dl,al ;mover al a dl para imprimir
add dl,30h ;sumar 30 para obtener caracter
mov ah,02h ;imprimir caracter
int 21h
;*****************DIVISION
mov ah,09h
lea dx,msj6 ;desplegar div
int 21h
xor ax,ax ;limpiamos el registro ax.
mov al,var2
mov bl,al
mov al,var1
div bl ; divide AX/BX el resultado lo almacena en AX, el residuo queda en DX
mov bl,al
mov dl,bl
add dl,30h
mov ah,02h
int 21h
.exit
; ****************PROCEDIMIENTOS
salto proc near
mov ah,09h
lea dx,linea
int 21h
mov dl,00h
ret
salto endp
leer proc near
mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
ret
leer endp
limpia proc near
mov ah,00h
mov al,03h
int 10h
ret
limpia endp
end
jueves, 7 de febrero de 2019
Unidad No.1-Programa que resta dos numeros de un digito
Link del archivo: https://drive.google.com/open?id=1ycbxSEFMEOJxgCNTCDe-gS2CbNCSbnvI
Ejecución del programa:
Código:
org 100h
.model small
.stack 64
.data
n1 db 0
n2 db 0
resta db 0
msg1 db "Ingrese el primer valor:", '$'
msg2 db 10,13, "Ingrese el segundo valor:", '$'
msg3 db 10,13, "Resta=", '$'
.code
begin proc far
;direccionamos al segmentos de datos
mov ax,@data
mov ds,ax
;solicitamos el primer digito
mov ah,09
lea dx,msg1
int 21h
;se lee el primer valor
mov ah,01
int 21h
sub al,30h; convierte el caracter en numero
mov n1,al
;solicitamos el segundo digito
mov ah,09
lea dx,msg2
int 21h
mov ah,01
int 21h
sub al,30h;convierte el caracter en numero
mov n2,al
;operacion
mov al,n1 ;lo que esta en n1 lo asigna a al
sub al,n2
add al,30h;convierte a caracter
mov resta,al
mov ah,09
lea dx,msg3
int 21h
;se imprime el caracter con el servicio 02 de la int 21h
mov ah,02 ;valor que se usa para poner algo en pantalla
mov dl,resta
int 21h
mov ah,4ch
begin endp
end
ret
Suscribirse a:
Entradas (Atom)
