Вывод позиц Код символа нажатой клавиши - Assembler
Формулировка задачи:
Задачи две: первая выводит позиц. Код символа нажатой клавиши.
Решение задачи: «Вывод позиц Код символа нажатой клавиши»
textual
Листинг программы
.model small .stack 100h .data CrLf db 0Dh, 0Ah, '$' msgPressAnyKey db 0Dh, 0Ah, 'Press any key to exit...', '$' kbEsc equ 011Bh .code main proc ;инициализация сегментного регистра ds адресом сегмента данных mov ax, @data mov ds, ax @@repeat: mov ah, 00h int 16h push ax mov al, ah mov ah, 0 call Show_AX mov ah, 09h lea dx, [CrLf] int 21h pop ax cmp ax, kbEsc jnz @@repeat @@Exit: mov ax, 4C00h int 21h main endp ; выводит знаковое 16-разрядное число из регистра AX на экран ; входные данные: ; ax - число для отображения Show_AX proc push ax push bx push cx push dx push di mov cx, 10 xor di, di ; di - кол. цифр в числе ; если число в ax отрицательное, то ;1) напечатать '-' ;2) сделать ax положительным or ax, ax jns @@Conv push ax mov dx, '-' mov ah, 2 ; ah - функция вывода символа на экран int 21h pop ax neg ax @@Conv: xor dx, dx div cx ; dl = num mod 10 add dl, '0' ; перевод в символьный формат inc di push dx ; складываем в стек or ax, ax jnz @@Conv ; выводим из стека на экран @@Show: pop dx ; dl = очередной выводимый символ mov ah, 2 ; ah - функция вывода символа на экран int 21h dec di ; повторяем пока di<>0 jnz @@Show pop di pop dx pop cx pop bx pop ax ret Show_AX endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д