Advertisement
xladomaz

LLL

Nov 18th, 2019
1,355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data    segment
  2.         a dw ?
  3.         nmb db ?
  4.         answer dw 0h
  5.        
  6.         result dw 0h
  7.        
  8.         ax_temp dw ?
  9.         bx_temp dw ?
  10.         temp db ?
  11. data    ends
  12.  
  13. code    segment
  14.         assume cs:code, ds:data
  15. main:   mov dx, data
  16.         mov ds, dx
  17.  
  18.         mov dx, 0B800h ; Base of videomemory;
  19.         mov es, dx
  20.         xor di, di
  21.         xor dx, dx ; Clear display;
  22.         mov ax, 0720h
  23.         mov cx, 80*25
  24.         rep stosw
  25.         jmp gen
  26.  
  27. outp_n:
  28.         mov ax_temp, ax
  29.         add di, 2
  30.         mov ax, 0730h
  31.         add al, nmb
  32.         mov es:[di], ax
  33.         mov ax, ax_temp
  34. ret
  35.  
  36.  
  37. start:  mov cx, 0Ah
  38. inloop: in  al, 60h
  39.         cmp al, bl
  40.         je  inloop
  41.         mov bl, al
  42.         cmp al, 01h
  43.         jne isEnter
  44.         jmp quit
  45. isEnter:cmp al, 1Ch
  46.         jne NotEsc
  47.         ret
  48. NotEsc: cmp al, 0Bh
  49.         jne CkInNum
  50.         mov a, 0
  51.         mov es:[di], 0730h
  52.         jmp NxtNum
  53. CkInNum:cmp al, 02h ; check scancode in range;
  54.         jl Not9
  55.         cmp al, 0Ah
  56.         jg Not9
  57.         mov ah, 0h
  58.         mov si, ax
  59.         dec si
  60.         mov a, si
  61.         add si, 0730h
  62.         mov es:[di], si
  63.         jmp NxtNum
  64. Not9:   jmp inloop
  65. NxtNum:
  66.         mov ax_temp, ax ; Answer;
  67.         mov bx_temp, bx
  68.         mov ax, 0
  69.         mov bl, 0Ah
  70.         mov ax, answer
  71.         mul bl
  72.         add ax, a
  73.         mov answer, ax
  74.         mov ax, ax_temp
  75.         mov bx, bx_temp
  76.        
  77.         inc di
  78.         inc di
  79.         dec cx
  80.        
  81.         jnz Not9
  82.         mov ax, 0h
  83. ret
  84.  
  85. gen:    
  86.         mov di, 0 ; Input 2 numbers;
  87.         call start
  88.         mov es:[di], 072Bh ; 2B - ascii +;
  89.         ;mov al, result
  90.         mov ax, answer
  91.         mov result, ax
  92.         mov answer, 0h
  93.         add di, 2
  94.         call start
  95.         mov es:[di], 073Dh ; 3D - ascii =;
  96.         mov ax, result
  97.         add ax, answer
  98.        
  99.         cmp ax, 0
  100.         jge ns
  101.         dec ax
  102.         not ax
  103.         add di, 2
  104.         mov es:[di], 072Dh ; 2D - ascii -;
  105. ns:     mov bl, 0Ah
  106.         div bl ; Get div of number;
  107.  
  108.         cmp al, 0Ah
  109.         jl num2
  110.         mov temp, ah
  111.         mov ah, 0
  112.         div bl
  113.        
  114.         mov nmb, al
  115.         call outp_n
  116.         mov al, ah
  117.         mov ah, temp
  118.        
  119. num2:   mov nmb, al ; Number output;
  120.         mov bl, ah
  121.         call outp_n
  122.         mov nmb, bl
  123.         call outp_n
  124.        
  125. pause:  in al, 60h
  126.         cmp al, 01h
  127.         jne pause
  128. quit:   mov ax, 4C00h
  129.         int  21h
  130. code    ends
  131.         end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement