Вычислить выражение - Assembler (223246)
Формулировка задачи:
Помогите,пожалуйста!
Необходимо вычислить выражение: W1*W2-B1*B2
И посоветуйте,пожалуйста,литературу по языку Ассемблер.Спасибо!
Решение задачи: «Вычислить выражение»
textual
Листинг программы
LOCALS .model small .stack 100h .data W1 dw 300 W2 dw 500 B1 db 120 B2 db 70 .code main proc mov ax, @data mov ds, ax mov ax, W1 ;(dx:ax):=W1*W2 imul W2 mov cx, ax ;(bx:cx):=(dx:ax) mov bx, dx mov al, B1 ;ax:=B1*B2 imul B2 cwd ;(dx:ax):=B1*B2 sub cx, ax ;(bx:cx):=W1*W2-B1*B2 sbb bx, dx mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Установка сегмента данных на сегмент стека: .model small .stack 100h
- Объявление переменных: .data W1 dw 300 W2 dw 500 B1 db 120 B2 db 70
- Начало выполнения программы: main proc
- Передача сегмента данных в регистр ax: mov ax, @data
- Передача сегмента данных в регистр ds: mov ds, ax
- Вычисление значения (dx:ax) как (W1*W2): mov ax, W1 imul W2
- Передача результата в регистры bx и cx: mov cx, ax mov bx, dx
- Вычисление значения ax как (B1*B2): mov al, B1 imul B2
- Приведение регистра ax к типу dx: cwd
- Вычисление значения (bx:cx) как (W1W2)-(B1B2): sub cx, ax sbb bx, dx
- Вывод в консоль сообщения об успешном выполнении программы: mov ax, 4C00h int 21h
- Конец выполнения программы: main endp
- Конец файла: end
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д