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