Вычислить выражение - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д