Ввести с клавиатуры трехразрядное восьмеричное число - Assembler
Формулировка задачи:
Ввести с клавиатуры трехразрядное восьмеричное число, преобразовать его в десятичное. Результат вывести на экран с соответствующим текстовым сообщением. Предусмотреть приглашение к вводу
Решение задачи: «Ввести с клавиатуры трехразрядное восьмеричное число»
textual
Листинг программы
LOCALS .model small .stack 100h .data msgGetNum db 'Enter octal number: ', '$' msgNum10 db 'In decimal = ', '$' CrLf db 0Dh, 0Ah, '$' N dw ? .code main proc mov ax, @data mov ds, ax mov ah, 09h lea dx, msgGetNum int 21h mov bx, 0 ;введённое число mov cx, 03h ;три цифры @@GetChar: mov ah, 08h int 21h cmp al, '0' jb @@GetChar cmp al, '9' ja @@GetChar int 29h sub al, '0' shl bx, 1 shl bx, 1 shl bx, 1 add bl, al loop @@GetChar mov N, bx ;перевод строки mov ah, 09h lea dx, CrLf int 21h ;вывод числа в десятичной системе mov ah, 09h lea dx, msgNum10 int 21h mov ax, N mov cx, 10 xor di, di ; di - кол. цифр в числе @@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, 02h ; ah - функция вывода символа на экран int 21h dec di ; повторяем пока di<>0 jnz @@Show mov ax, 4C00h int 21h main endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д