Вычислить выражение - Assembler (223244)
Формулировка задачи:
Написать программу, которая вычисляет арифметическое выражение и результат записывает в память
Операнды А, В, С, D, E, F беззнаковые, длиной в байтах, согласно индекса
X=K+B3-D2/C1+E1*F2
K=25630
Решение задачи: «Вычислить выражение»
textual
Листинг программы
- LOCALS
- .model small
- .stack 100h
- .data
- A db 0
- B db 3 dup(1)
- C db 8
- D dw 12
- E db 48
- F dw 84
- K dw 25630
- Res db 4 dup(0)
- .code
- main proc
- mov ax, @data
- mov ds, ax
- mov dx, 0 ;(dx:ax):=K
- mov ax, K
- add ax, word ptr B ;(dx:ax):=K+B3
- adc dl, byte ptr B+2
- adc dh, 0
- mov word ptr Res, ax ;сохранение промежуточных результатов
- mov word ptr Res+2, dx
- mov ax, D ;(dx:ax):=D2
- mov dx, 0
- mov bh, 0 ;bx:=C1
- mov bl, C
- div bx ;ax:=D2/C1
- mov bx, ax ;bx:=D2/C1
- mov ax, word ptr Res ;восстановление промежуточных результатов
- mov dx, word ptr Res+2
- sub ax, bx ;(dx:ax):=(dx:ax)-bx=K+B3-D2/C1
- sbb dx, 0
- push ax ;сохранение промежуточных результатов
- push dx
- mov ah, 0 ;(dx:ax):=E1*F2
- mov al, E
- mul word ptr F
- pop bx ;восстановление промежуточных результатов
- pop cx
- add ax, cx ;(dx:ax):=K+B3-D2/C1+E1*F2
- adc dx, bx
- mov word ptr Res, ax ;запись результата в память
- mov word ptr Res+2, dx
- mov ax, 4C00h
- int 21h
- main endp
- end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д