TASM арифметические выражения - Assembler

Узнай цену своей работы

Формулировка задачи:

Составьте программу, вычисляющую значение арифметического выражения. Результат выведите в шестнадцатеричном и двоичном виде f=(x*y-a*b)/(a+b) x = 40 y = 65 a = 25 b = 16 Доброй ночи, помогите реализовать задание человеку, что мало чего смыслит в этом деле, нужно понять алгоритм действий в принципе, решение не обязательно, но было бы здорово, заранее благодарю

Решение задачи: «TASM арифметические выражения»

textual
Листинг программы
.model small
 
.data
x db 40
y db 65
a db 25
b db 16
 
.stack 100h     
 
.code           
start:          
mov ax,@data    
mov ds,ax
 
mov al,a
 
mul b
 
xchg ax,bx
 
mov al,x
 
mul y
 
sub ax,bx
 
mov bl,b
 
add bl,a
 
div bl
    
mov ah,4Ch      
mov al,00h      
int 21h         
end start

Объяснение кода листинга программы

  1. .model small — указывает на модель сегментной памяти, в данном случае модель small, что позволяет использовать сегменты для данных и кода размером 16 бит.
  2. .data — раздел для определения данных.
  3. x db 40 - определение переменной x со значением 40.
  4. y db 65 - определение переменной y со значением 65.
  5. a db 25 - определение переменной a со значением 25.
  6. b db 16 - определение переменной b со значением 16.
  7. .stack 100h — указывает на размер стека в 100 байт.
  8. .code — раздел для определения кода.
  9. start: — определяет точку входа в программу.
  10. mov ax,@data — перемещает значение сегмента данных в регистр ax.
  11. mov ds,ax — делает сегмент данных равным значению регистра ax.
  12. mov al,a — перемещает значение переменной a в регистр al.
  13. mul b — выполняет умножение значения регистра al на значение переменной b.
  14. xchg ax,bx — меняет значения регистра ax и bx.
  15. mov al,x — перемещает значение переменной x в регистр al.
  16. mul y — выполняет умножение значения регистра al на значение переменной y.
  17. sub ax,bx — выполняет вычитание значения регистра bx из значения регистра ax.
  18. mov bl,b — перемещает значение переменной b в регистр bl.
  19. add bl,a — выполняет сложение значения регистра bl и значения переменной a.
  20. div bl — выполняет деление значения регистра bl на значение переменной bl.
  21. mov ah,4Ch — перемещает значение 4Ch в регистр ah.
  22. mov al,00h — перемещает значение 00h в регистр al.
  23. int 21h — выполняет ввод-вывод в систему.

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы