Advertisement
Glebyshka

5.2 Assembler

Mar 17th, 2021 (edited)
1,570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2.  
  3. .data
  4.  
  5.     string db 250,?, 256 dup ('$')
  6.    
  7. .code
  8.  
  9. start:
  10.  
  11.     mov ax,@data
  12.     mov ds,ax
  13.     mov ax,0b800h
  14.     mov es,ax
  15.    
  16.   ;   mov ax,3
  17.      ;  int 10h
  18.    
  19.      mov ah,10       ; Ввод строки с клавиатуры и запись её в массив символов
  20.     lea dx,string
  21.     int 21h
  22.    
  23.     ;посимвольно
  24.     lea si,string+1        ; В данном случае si - регистр-источник для команды loadsb
  25.     xor cx,cx
  26.     mov cl,byte ptr [si]
  27.     add si,cx  
  28.     mov di,160
  29.     mov ah,10
  30.    
  31. beg:  
  32.     std              ; Устанавливаем флаг df в 1 для работы со строками
  33.     lodsb            ; Читаем символ в al и уменьшаем si на 1, так как df = 1
  34.     cld             ; Устанавливаем флаг df в 0 для работы со строками  
  35.     stosw           ; Уменьшает регистр di на 2, так как df = 0
  36.     loop beg
  37.    
  38.    
  39.    
  40.     ;по словам (разделитель - пробел)
  41.     lea di,string+1
  42.     mov si,320  
  43.     xor cx,cx
  44.     mov cl,byte ptr [di]
  45.     add di,cx
  46.     inc cx
  47.     mov dx,cx
  48.    
  49.     mov al,' '
  50. deg:    push ds
  51.     pop es
  52.     std
  53.     repnz scasb
  54.         push di
  55.             xchg dx,cx
  56.             sub cx,dx
  57.             add di,2
  58.             dec cx
  59.             mov ax,0b800h
  60.             mov es,ax      
  61.             cld
  62.             mov ah,12
  63.             xchg si,di  
  64.            
  65. begs:  
  66.  lodsb
  67.     stosw
  68.     loop begs  
  69.         mov al,' '
  70.         stosw  
  71.         mov si,di
  72.         pop di
  73.         mov cx,dx
  74.         or cx,cx
  75.         jnz deg
  76.    
  77.    
  78.     mov     ah,10h
  79.     int 16h
  80.     mov ah,4ch
  81.     int 21h
  82. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement