Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- model small
- .stack 100h
- .data
- first db 'first$'
- second db 'second$'
- equal db 'equal$'
- buf1 db 82 dup(?)
- buf2 db 82 dup(?)
- .code
- out_msg macro msg ;Выводит строку на экран.
- push ax
- push dx
- mov ah,9
- lea dx,msg
- int 21h
- pop dx
- pop ax
- endm
- start: mov ax,@data
- mov ds,ax
- mov ah,3fh ;Ввод первой строки.
- mov bx,0 ;Ноль означает клавиатуру.
- mov cx,82 ;Максимальное число вводимых символов(80) плюс 2 (для 0ah и 0dh).
- lea dx,buf1 ;Адрес области памяти для вводимой строки.
- int 21h
- push ax ;Запоминаем длину первой строки в стеке(она на 2 больше реальной длины, но это для сравнения неважно).
- mov ah,3fh ;Ввод второй строки.
- lea dx,buf2
- int 21h ;Длина второй строки в ax
- pop bx ;В bx длина первой строки.
- push ax
- sub ax,bx ;Сравниваем длины.
- js @f ;Если результат вычитания отрицательный, первая строка длиннее второй.
- je @e ;Поднят zf - строки равны.
- ;Результат вычитания положительный - вторая строка больше первой.
- pop ax
- mov cx, ax
- mov ah,40h
- mov bx,1
- lea dx,buf2
- int 21h
- jmp exit
- @f: mov ah,40h
- mov cx,bx
- mov bx,1
- lea dx,buf1
- int 21h
- jmp exit
- @e: out_msg equal
- exit: mov ax,4c00h
- int 21h
- end start
Advertisement
Add Comment
Please, Sign In to add comment