-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2.ASM
52 lines (42 loc) · 1.72 KB
/
2.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
org 100h ;óñòàíàâëèâàåì àäðåñ íà÷àëà ïðîãðàììû
start:
mov ah, $09 ;âûâîäèì â êîíñîëü òåêñò
mov dx, name_prog
int 21h
mov ah, $02 ;ïåðåâîä êóðñîðà íà ñëåäóþùóþ ñòðî÷êó
mov dx, 0x0D0A
int 21h
mov ah, $09 ;âûâîäèì â êîíñîëü òåêñò
mov dx, str2
int 21h
mov ah, $02 ;ïåðåâîä êóðñîðà íà ñëåäóþùóþ ñòðî÷êó
mov dx, 0x0D0A
int 21h
mov ah, $09 ;âûâîäèì â êîíñîëü òåêñò
mov dx, result_is
int 21h
mov ax, $02 ;ãðóçèì b â AX
mov cx, $03 ;ãðóçèì c â CX
mul cx ;óìíîæàåì b íà c, ðåçóëüòàò â DX:AX
mov bx, [a] ;ãðóçèì â BX a
add ax,bx ;ñêëàäûàåì b*c ñ a
mov cx,[d] ;ãðóçèì â CX d
div cx ;äåëèì AX íà CX (ò.å. (a+b*c)/d). ðåçóëüòàò â DX:AX
mov [res],ax;ñîõðàí¤åì ðåçóëüòàò (ìëàäøóþ ÷àñòü) â ÿ¾ res
mov ax, [res];ãðóçèì çíà÷åíèå èç ÿ¾ res â àêê. AX
add ax, '0' ;ïåðåâîä â ASCII êîä
mov bx,ax ;ïåðåñûëêà èç ax â bx ðåçóëüòàòà ðàñ÷¸òà, ò.ê. ðã ah íóæåí íàì äàëåå äëÿ âûâîäà â êîíñîëü
mov ah, $02 ;âûâîä â êîíñîëü ðåçóëüòàòà
mov dx,bx
int 21h
mov ah,$08 ;îæèäàíèå íàæàòèÿ ëþáîé êëàâèøè
int 21h
ret
name_prog db "This program calculates (a+b*c)/d$"
str2 db "where a=1, b=3, c=3, d=2$"
result_is db "result is equal to $"
a dw 1h
d dw 2h
res dw 0h
xor ax,ax
int 16h