-
Notifications
You must be signed in to change notification settings - Fork 0
/
PerimeterRectangle.asm
105 lines (88 loc) · 1.82 KB
/
PerimeterRectangle.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
.model small
.stack 100
.data
dos equ 2 ; declaracion de constante=2
m1 db 10,13,"Introduce la base: $"
m2 db 10,13,"Introduce la altura: $"
m3 db 10,13,10,13,"Area: $"
m4 db 10,13,"Perimetro: $"
m5 db "Area y perimetro de un rectangulo",10,13,'$'
base db 0
altura db 0
unidades db 0
decenas db 0
.code
.startup
call cls
; imprime titulo
mov ah,09h
lea dx,m5
int 21h
; imprime introduce la base
lea dx,m1
int 21h
; pide la base
mov ah,01h
int 21h
sub al,30h
mov base,al
; imprime introduce la altura
mov ah,09h
lea dx,m2
int 21h
; pide la altura
mov ah,01h
int 21h
sub al,30h
mov altura, al
;*********************** calcula area
mov al,base
mul altura ; multiplica: al * altura y el resultado queda en al
aam
mov decenas,ah
mov unidades,al
; imprime el area es
mov ah,09h
lea dx,m3
int 21h
call imprime2digitos
;******************** calcula perimetro
mov al,dos
mul base
mov bl,al
mov al,dos
mul altura
mov cl,al
add bl,cl
mov al,bl
aam
mov decenas,ah
mov unidades,al
; imprime el perimetro es
mov ah,09h
lea dx,m4
int 21h
call imprime2digitos
.exit
cls proc near
mov ah,00h
mov al,03h
int 10h
ret
endp
impcar proc near
add dl,30h
mov ah,02h
int 21h
ret
endp
imprime2digitos proc near
; imprime decenas
mov dl,decenas
call impcar
; imprime unidades
mov dl,unidades
call impcar
ret
endp
end