Другие языки программирования и технологии

Помогите, нужен код на ассемблере. Вывод меньшего из введенных чисел

Ни
Николай
416
Процессор i8086 или старше.
Операционная система MS DOS.
16-разрядное приложение.
Реальный режим работы.
Компилятор TASM/MASM.

.model small
.stack 100h
.data
Prompt db 'Введите три восьмеричных числа: '
crlf db 13,10,36
ResTxt db 'Минимальное из введенных чисел: $'
.code
InputOct proc
push cx
push bx
xor bx,bx
mov cx,3
InpOct1:
mov ah,8
int 21h
or al,al
jnz NotExtend
int 21h
jmp InpOct1
NotExtend:
cmp al,0Dh
je keyEnter
or cx,cx
jz InpOct1
mov dl,al
sub al,30h
jb InpOct1
cmp al,7
ja InpOct1
shl bx,3
or bl,al
dec cx
mov ah,2
int 21h
jmp InpOct1
keyEnter:
cmp cx,3
je InpOct1
lea dx,crlf
mov ah,9
int 21h
mov ax,bx
pop bx
pop cx
ret
InputOct endp

PrintOct proc
xor cx,cx
PrPrepare:
mov dl,al
and dl,7
or dl,30h
push dx
inc cx
shr ax,3
test ax,ax
jnz PrPrepare
mov ah,2
PrOut:
pop dx
int 21h
loop PrOut
ret
PrintOct endp

N68159605:
mov ax,@data
mov ds,ax
lea dx,Prompt
mov ah,9
int 21h
mov cx,3
xor bx,bx
not bx
DoLoop:
call InputOct
cmp ax,bx
jnb NotLess
xchg ax,bx
NotLess:
loop DoLoop
lea dx,ResTxt
mov ah,9
int 21h
mov ax,bx
call PrintOct
xor ah,ah
int 16h
mov ah,4Ch
int 21h
end N68159605

P.S. Программа игнорирует нажатие всех клавиш, кроме цифровых от 0 до 7 и Enter.
Aziz Jabborov
Aziz Jabborov
51 590
Лучший ответ

Похожие вопросы