Wacky_rubia

Сашин ассемблер

Sep 28th, 2015
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. model small
  2. .stack 100h
  3. .data
  4. first db 'first$'
  5. second db 'second$'
  6. equal db 'equal$'          
  7. buf1 db 82 dup(?)  
  8. buf2 db 82 dup(?)
  9. .code
  10. out_msg macro msg       ;Выводит строку на экран.
  11.         push ax
  12.         push dx
  13.         mov ah,9
  14.         lea dx,msg
  15.         int 21h
  16.         pop dx
  17.         pop ax
  18.         endm
  19. start:  mov ax,@data
  20.         mov ds,ax
  21.         mov ah,3fh      ;Ввод первой строки.
  22.         mov bx,0        ;Ноль означает клавиатуру.
  23.         mov cx,82       ;Максимальное число вводимых символов(80) плюс 2 (для 0ah и 0dh).
  24.         lea dx,buf1      ;Адрес области памяти для вводимой строки.
  25.         int 21h
  26.         push ax         ;Запоминаем длину первой строки в стеке(она на 2 больше реальной длины, но это для сравнения неважно).
  27.         mov ah,3fh      ;Ввод второй строки.
  28.         lea dx,buf2        
  29.         int 21h         ;Длина второй строки в ax
  30.         pop bx          ;В bx длина первой строки.
  31.         push ax      
  32.         sub ax,bx       ;Сравниваем длины.
  33.         js @f           ;Если результат вычитания отрицательный, первая строка длиннее второй.
  34.         je @e           ;Поднят zf - строки равны.
  35.         ;Результат вычитания положительный - вторая строка больше первой.
  36.        
  37.         pop ax
  38.         mov cx, ax
  39.         mov ah,40h
  40.         mov bx,1
  41.         lea dx,buf2
  42.         int 21h
  43.        
  44.         jmp exit
  45.        
  46. @f:     mov ah,40h
  47.         mov cx,bx
  48.         mov bx,1
  49.         lea dx,buf1
  50.         int 21h
  51.        
  52.         jmp exit
  53.        
  54. @e:     out_msg equal
  55.  
  56. exit:   mov ax,4c00h
  57.         int 21h
  58. end start
Advertisement
Add Comment
Please, Sign In to add comment