Вычислить наибольшее целое положительное число а, удовлетворяющее условию - Assembler
Формулировка задачи:
1.Вычислить наибольшее целое положительное число а, удовлетворяющее условию:3a^2-127a<0
Прошу вас, я частично понимаю Ассемблер, но я эти задачи не знаю как решать.Прошу вас
Решение задачи: «Вычислить наибольшее целое положительное число а, удовлетворяющее условию»
textual
Листинг программы
xor cx,cx M:inc cl mov ax,cx shl ax,1 add ax,cx sub ax,127 imul cx test dh,80h jnz M Fin:dec cl ; результат в CL
Объяснение кода листинга программы
- xor cx,cx — в данном случае используется операция побитового исключающего или (XOR), результат которой будет равен 0. Это необходимо для инициализации счётчика.
- M:inc cl — увеличение значения счётчика на единицу.
- mov ax,cx — значение счётчика (CX) переносится в регистр AX.
- shl ax,1 — сдвиг значения регистра AX вправо на один байт с сохранением значения в регистре AX.
- add ax,cx — сложение значения регистра AX и счётчика (CX), результат сохраняется в регистре AX.
- sub ax,127 — вычитание из значения регистра AX числа 127, результат сохраняется в регистре AX.
- imul cx — умножение значения счётчика (CX) на значение регистра AX, результат сохраняется в регистре AX.
- test dh,80h — сравнение значения в регистре DH с 80 (в десятичной системе это 120), результат вычисления в данном случае будет 0.
- jnz M — если предыдущая инструкция вернула 0, то происходит переход на следующую инструкцию, иначе на M.
- Fin:dec cl — результат вычислений сохраняется в счётчике (CL).