Advertisement
Guest User

Untitled

a guest
Apr 15th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. format MZ
  2. entry Main: Start
  3. segment Main
  4.  
  5. Input_Str_ax:
  6.         mov dx, ax
  7.         mov ah, 0AH
  8.         int 21H
  9.         ret
  10.  
  11. StrToInt:
  12.         push cx
  13.         push si
  14.         mov si, ax
  15.         mov cl, [si+1]
  16.         mov ch, 0
  17.         add si, cx
  18.         mov bl, 0
  19. FindNumLoop:
  20.         mov bh, [si]
  21.         sub bh, '0'
  22.         cmp cl,2
  23.         jne @F
  24.         movzx ax, bh
  25.         imul ax, 10
  26.         mov bh, al
  27. @@:
  28.         add bl, bh
  29.         inc si
  30.         dec cl
  31.         jnz FindNumLoop
  32.         pop si
  33.         pop cx
  34.         ret
  35.  
  36. Output:
  37.         mov cx, 0
  38.         mov bx, 10
  39. Output1:
  40.         xor dx, dx
  41.         div bx
  42.         add dx, '0'
  43.         push dx
  44.         inc cx
  45.         cmp ax, 0
  46.         jne Output1
  47.         mov ah, 02h
  48. Output2:
  49.         pop dx
  50.         int 21h
  51.         dec cx
  52.         jnz Output2
  53.         mov dx, ' '
  54.         int 21h
  55.         ret
  56.  
  57.  
  58. FindValStek:
  59.         push bp
  60.         mov bp, sp
  61.         mov ax, [bp + 6]
  62.         mov cx, [bp + 4]
  63.         imul ax, 32
  64.         mov bx, ax
  65.         mov ax, cx
  66.         mul al
  67.         imul ax,7
  68.         add ax, bx
  69.         mov sp, bp
  70.         pop bp
  71.         ret
  72.  
  73.  
  74. Start:
  75.         mov ax, Dat
  76.         mov ds, ax
  77.         ;mov ax, Str1
  78.         ;call Input_Str_ax
  79.         ;mov ax, Str1
  80.         ;call StrToInt
  81.         ;mov [Num1], bx
  82.         ;mov ah, 09h
  83.         ;mov dx, newL
  84.         ;int 21h
  85.         ;mov ax, Str2
  86.         ;call Input_Str_ax
  87.         ;mov ax, Str2
  88.         ;call StrToInt
  89.         ;mov [Num2], bx
  90.         mov ax, [Num1]
  91.         mov cx, [Num2]
  92.         call far Proc: FindValRegAxCx
  93.         call Output
  94.         call far Proc: FindValMem
  95.         call Output
  96.         push [Num1]
  97.         push [Num2]
  98.         call FindValStek
  99.         call Output
  100.         mov ah, 08h
  101.         int 21h
  102.  
  103. segment Proc
  104. FindValRegAxCx:
  105.         imul ax, 32
  106.         mov bx, ax
  107.         mov ax, cx
  108.         mul al
  109.         imul ax,7
  110.         add ax, bx
  111.         retf
  112. FindValMem:
  113.         mov ax, [Num1]
  114.         mov cx, [Num2]
  115.         imul ax, 32
  116.         mov bx, ax
  117.         mov ax, cx
  118.         mul al
  119.         imul ax,7
  120.         add ax, bx
  121.         retf
  122.  
  123. segment Dat
  124. newL db 13,10, '$'
  125. Str1 db 3, 0, 2 dup (?)
  126. Str2 db 3, 0, 2 dup (?)
  127. Num1 dw  12
  128. Num2 dw  12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement