Вывести третью с конца цифру в записи положительного целого числа - Assembler
Формулировка задачи:
Нужно написать програму. Я понимаю что нужно поделить на 100, а потом вывести остаток от деления на 10, но записать на ассемблере Не могу. Помогите написать программу (вставкой в код С ++). Я вот чтото такое написал:
#includeusing namespace std; // Вивести третю з кінця цифру в записі додатного цілого числа. void main() { int number, revers_third_digit; cin >> number; __asm { mov eax, 100 mov edx, number cdq div eax push eax mov eax, printf pop ebx } system("pause"); }
Решение задачи: «Вывести третью с конца цифру в записи положительного целого числа»
textual
Листинг программы
mov al,123 aam mov al,ah aam mov dl,ah or dl,48 mov ah,2 int 21h
Объяснение кода листинга программы
- Сначала в коде переменной
al
присваивается значение 123. - Затем выполняется команда
aam
, которая преобразует десятичное число в шестнадцатеричное. - Результат сохраняется в регистре
ah
. - Затем из регистра
ah
берется третья цифра, начиная с конца (в данном случае это 3), и сохраняется в регистреdl
. - Затем к
dl
добавляется 48, чтобы получить ASCII-код символа. - Затем в регистре
ah
устанавливается значение 2. - И наконец, выполняется команда
int 21h
, которая выводит значение переменнойah
на экран.