Сравнение чисел - Assembler
Формулировка задачи:
Надеюсь найдется кто-то, который пишет на этом языке. В общем суть такая нужно как-то сравнить два числа и написать что из них больше, меньше либо они равные.
Решение задачи: «Сравнение чисел»
textual
Листинг программы
;fasm code...
org 100h
start: mov si,2fh
lodsw
cmp ah,al
jb fuck
mov ax,':)'
jmp print
fuck: mov ax,':('
print: int 29h
shr ax,8
int 29h
int 20h
Объяснение кода листинга программы
В этом коде происходит следующее:
- Организация сегмента данных - сегмент данных (DS) устанавливается равным 100h.
- Начало работы программы - переход на метку
start. - Загрузка числа в регистры - число 2fh загружается в регистр si.
- Сравнение чисел - происходит сравнение чисел в регистрах ah и al. Если ah меньше или равно al, то происходит переход на метку
fuck. - Вывод числа - если произошло сравнение, то в регистр ax загружается число ':('. Если не произошло, то в регистр ax загружается число ':)'.
- Вывод числа на экран - переход на функцию вывода числа на экран (int 29h).
- Масштабирование числа - число в регистре ax масштабируется на 8 бит и снова выводится на экран (int 29h).
- Вывод символа - переход на функцию вывода символа на экран (int 20h). Список переменных и их значений:
- si - 2fh
- ax - 0-й регистр
- ah - 0-й регистр
- al - 0-й регистр