Advertisement
TTLC198

Лаба 3 по СП 6 варик 1 часть

Oct 15th, 2022
1,485
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model tiny
  2. .data
  3.  enter db 13
  4.  buf dw 0
  5.  ch_cou dw 1
  6.  num dw 0
  7.  ostatok db 0
  8. .code
  9. n:
  10.  push cs
  11.  pop ds
  12.  
  13.  xor bx, bx       ; bx = 0
  14.  push 0b          ; stack += 0
  15.  ; start input
  16.  input:
  17.   mov ah, 01h     ; enter symbol mode
  18.   int 21h         ; interrupt
  19.  
  20.   cmp al, enter   ; compare entered symbol
  21.   je end_input    ; if enter
  22.    
  23.   mov dl, 30h     ; dl = 30h
  24.   sub al, dl      ; al -= 30h
  25.    
  26.   mov bl, al      ; bl = al
  27.    
  28.   pop ax          ; from stack to ax
  29.    
  30.   mov dl, 10      ; dl = 10
  31.   mul dl          ; ax *= dl
  32.    
  33.   add ax, bx      ; ax += bx
  34.   push ax         ; add ax to stack
  35.  jmp input        ; loop
  36.  end_input:      
  37.  
  38.  ;zadanie
  39.  xor dx, dx       ; dx = 0
  40.  pop ax           ; from stack to ax
  41.  mov bx, 10       ; bx = 10
  42.  div bx           ; ax /= bx
  43.  mov num, ax      ; num = ax
  44.  mov ostatok, dl  ; ostatok = dl      
  45.        
  46.  ; start output
  47.  mov ah, 02h      ; out symbol mode
  48.  mov dl, 10       ; space symbol
  49.  int 21h          ; interrupt
  50.  
  51.  mov ax, num      ; ax = num
  52.  
  53.  output:          
  54.  cmp ax, 0        ; ax ?= 0
  55.  je end_output    ; if = 0 go to end
  56.  xor dx, dx       ; dx = 0
  57.                  
  58.  mov bx, 10       ; bx = 10
  59.  div bx           ; ax /= 10
  60.  
  61.  mov bx, 30h      ; bx = 30h
  62.  add dx, bx       ; dx += 30h
  63.  inc ch_cou       ; ch_cou++
  64.  push dx          ; add dx to stack
  65.  jmp output       ; loop
  66.  
  67.  end_output:      
  68.  
  69.  mov cx, ch_cou   ; cx = ch_cou
  70.  
  71.  out_stack:      
  72.  
  73.  mov ah, 02h      ; out symbol mode
  74.  pop bx           ; bx = value from stack
  75.  mov dl, bl       ; dl = bl
  76.  int 21h          ; interrupt
  77.  
  78.  loop out_stack   ; loop
  79.  
  80.  mov ah, 02h      ; out symbol mode
  81.  mov dl, 32       ; dl = space
  82.  int 21h          ; interrupt
  83.  
  84.  mov ah, 02h      ; out symbol mode
  85.  mov dl, ostatok  ; dl = ostatok
  86.  mov bl, 30h      ; bl = 30h
  87.  add dl, bl       ; dl += bl
  88.  int 21h          ; interrupt
  89.  
  90.  mov ax, 4c00h
  91.  int 21h
  92.  
  93. end N
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement