Advertisement
MadCortez

Untitled

Mar 28th, 2021
1,849
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         org 100h
  2.  
  3.  
  4. start:
  5.                 ;âûâîä òåêñòà â êîíñîëü
  6.                 mov ah,9h
  7.                 mov dx, str1
  8.                 int 21h
  9.  
  10.                 mov ah, 09h
  11.                 mov dx, inputA          ;ïðåäëîæåíèå ââîäà À
  12.                 int 21h
  13.  
  14.                 mov ah, 0ah
  15.                 mov dx, strA            ;ââîäèì ïåðâîå ÷èñëî À
  16.                 int 21h
  17.  
  18.                 mov bx, dx              ;ïîìåùàåì â bx ññûëêó íà ñòðîêó â êà÷åñòâå ïåðåäà÷è ðåãèñòðà êàê ïàðàìåòðà ïðîöåäóðû
  19.                 call count_number       ;èçâëåêàåì èç ñòðîêè ÷èñëî À
  20.                 push ax                 ;ðåçóëüòàò èç ðåãèñòðà àõ ïîìåùàåì â ñòåê
  21.  
  22.                 mov ah, 02h
  23.                 mov dx, 0x0D0A
  24.                 int 21h
  25.  
  26.                 mov ah, 09h
  27.                 mov dx, inputB          ;ïðåäëîæåíèå ââîäà Â
  28.                 int 21h
  29.  
  30.                 mov ah, 0ah
  31.                 mov dx, strB            ;ââîäèì âòîðîå ÷èñëî Â
  32.                 int 21h
  33.  
  34.  
  35.                 mov bx, dx
  36.                 call count_number       ;èçâëåêàåì èç ñòðîêè ÷èñëî Â
  37.                 push ax                 ;ðåçóëüòàò èç ðåãèñòðà àõ â ñòåê
  38.  
  39.                 ;ïåðåõîä íà íîâóþ ñòðîêó
  40.                 mov ah,9h
  41.                 mov dx, new_line
  42.                 int 21h
  43.  
  44.                 ;âûâîä òåêñòà â êîíñîëü
  45.                 mov ah, 9h
  46.                 mov dx, str2
  47.                 int 21h
  48.  
  49.                 call get_result         ;ïîëó÷àåì ðåçóëüòàò âû÷èñëåíèé
  50.  
  51.                 mov ax, [res]           ;ïåðåìåùàåì â àõ ðåçóëüòàò äëÿ ïîñëåäóþùåãî âûâîäà îòâåò
  52.                 call output_number      ;âûâîä îòâåòà
  53.  
  54.                 pop ax                  ;÷èñòèì ñòåê
  55.                 pop ax
  56.  
  57.                 mov ah, 08h
  58.                 int 21h                 ;êîíåö îñíîâíîé ÷àñòè ïðîãðàììû
  59.                 ret
  60.  
  61. count_number:                    ;ïðîöåäóðà ïîëó÷åíèÿ ÷èñëà èç ñòðîêè
  62.                 xor ax, ax      ;îáíóëÿåì àõ
  63.                 xor dx, dx      ;îáíóëÿåì dx
  64.  
  65.                 add bx, 1h      ;ïåðåäâèãàåì àäðåñ ñòðîêè íà 1
  66.                 mov cl, [bx]    ;çàõâàòûâàåì 1 áàéò, â êîòîðîì íàõîäèòñÿ ôàêòè÷åñêàÿ äëèíà ñòðîêè
  67.  
  68. lp:                             ;öèêë ïîëó÷åíèÿ ÷èñëà
  69.                 inc bx          ;óâåëè÷èâàåì óêàçàòåëü íà ñòðîêó íà 1
  70.                 mul [cm]        ;óìíîæàåì íà 10
  71.                 add al, [bx]    ;ïðèáàâëÿåì öèôðó
  72.                 sub ax, '0'     ;óáèðàåì êîä '0'
  73.  
  74.                 loop lp         ;óìåíüøàåì ðåãèñòð ñõ íà 1, ñðàâíèâàåì ñ íóëåì, åñëè íå íîëü, òî ïîâòîðÿåì öèêë
  75.  
  76.  
  77.  
  78.                 ret
  79.  
  80.  
  81. output_number:                   ;ïðîöåäóðà âûâîäà ÷èñëà íà ýêðàí
  82.                 push '*'        ;çàïîìèíàåì, ÷òî êîíöîì ÷èñëà â ñòåêå áóäåò ñèìâîë *
  83.  
  84. lpt:                            ;öèêë ðàçáèåíèÿ ÷èñëà íà öèôðû è ïåðåäà÷à åãî â ñòåê
  85.                 div [cm]        ;äåëåíèå ÷èñëà íà 10, îñòàòîê óõîäèò â dx
  86.                 push dx         ;äîáàâëÿåì â ñòåê îñòàòîê îò äåëåíèÿ
  87.                 xor dx, dx      ;î÷èùàåì dx îò óæå çàíåñåííîãî ðåçóëüòàòà
  88.                 cmp ax, 0h      ;ñðàâíèâàåì ðåçóëüòàò äåëåíèÿ ñ 0
  89.                 jne lpt         ;åñëè íå 0, òî çàíîâî öèêë
  90.  
  91.  
  92.                 mov ah, 02h
  93.                 mov dx, 0x0D0A
  94.                 int 21h
  95.  
  96. lpp:                            ;öèêë âûâîäà ÷èñëà
  97.                 pop bx          ;âûòàñêèâàåì ÷èñëî èç ñòåêà
  98.  
  99.                 cmp bx, '*'     ;åñëè êîíåö ñòåêà
  100.                 je endst        ;òî âûõîäèì èç öèêëà
  101.  
  102.                 add bx, '0'     ;èíà÷å äîáàâëÿåì '0' ÷òîáû ïîëó÷èòü ñèìâîë
  103.  
  104.                 mov ah, 02h
  105.                 mov dx, bx      ;âûâîäèì ñèìâîë
  106.                 int 21h
  107.  
  108.                 jmp lpp         ;ïîâòîðÿåì öèêë
  109.  
  110. endst:          ret             ;âûõîäèì
  111.  
  112. get_result:
  113.                 mov bp, sp      ;â ðåãèñòð bp ïåðåäàåì óêàçàòåëü íà ñòåê äëÿ äîñòóïà ê äðóãèì ïåðåìåííûì ñòåêà
  114.  
  115.                 mov ax, [bp+4]  ;â ðåãèñòð àõ ïåðåäàåì ïåðåìåííóþ À
  116.                 mov bx, [bp+2]  ;â ðåãèñòð ax ïåðåäàåì ïåðåìåííóþ Â
  117.                 mov cx, ax
  118.                 mul cx
  119.                 mul cx
  120.                 mov cx, ax
  121.                 mov ax, bx
  122.                 mul ax
  123.                 mov bx, ax
  124.                 mov ax, cx
  125.                 sub ax, bx
  126.                 mov [res], ax   ;ñîõðàíÿåì ðåçóëüòàò
  127.  
  128.                 ret             ;âûõîäèì èç ïðîöåäóðû
  129.  
  130.  
  131.  
  132.  
  133. str1            db "We will calculate A^3 - B^2", $0d, $0a, "$"
  134. str2            db "Register procedure result is $"
  135. inputA          db "Enter number A: $"
  136. inputB          db "Enter number B: $"
  137. new_line        db      $0d, $0A, "$"
  138. strA            db 10, 0, 10 dup(?)
  139. strB            db 10, 0, 10 dup(?)
  140. numA            dw 0h
  141. numB            dw 0h
  142. cm              dw 10
  143. res             dw 0h
  144.  
  145.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement