Вычисление выражения по формуле. - Assembler (223261)
Формулировка задачи:
Доброго времени суток!
Необходимо выполнить данные действия на ассемблере, заранее спасибо!
Х= 6 (А - 3В + С / 3) + 10
Решение задачи: «Вычисление выражения по формуле.»
textual
Листинг программы
LOCALS .model small .stack 100h .data A dw 12 B dw 14 C dw 15 X dw ? .code main proc mov ax, @data mov ds, ax mov cx, A ;cx:=A mov ax, B mov bl, 3 imul bl sub cx, ax ;cx:=A-3B mov ax, C mov dx, 0 mov bx, 3 idiv bx add cx, ax ;cx:=A-3B+C/3 mov ax, 6 imul cx ;ax:=6(A-3B+C/3) mov cx, ax ;cx:=6(A-3B+C/3) add cx, 10 ;cx:=6(A-3B+C/3)+10 mov X, cx ;X:=6(A-3B+C/3)+10 mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- .model small - устанавливает модель сегментации данных для языка ассемблера, в данном случае
small
, что означает 16-битный сегментный режим. - .stack 100h - устанавливает размер стека в 100 байтов.
- .data - сегмент данных.
- A dw 12 - определяет переменную A как 16-битное целочисленное значение, содержащее 12.
- B dw 14 - определяет переменную B как 16-битное целочисленное значение, содержащее 14.
- C dw 15 - определяет переменную C как 16-битное целочисленное значение, содержащее 15.
- X dw ? - определяет переменную X как 16-битное целочисленное значение, содержащее неопределенное значение.
- .code - сегмент кода.
- main proc - определяет процедуру main.
- mov ax, @data - перемещает сегмент данных в регистр ax.
- mov ds, ax - устанавливает сегмент данных равным сегменту, содержащемуся в регистре ax.
- mov cx, A - перемещает значение переменной A в регистр cx.
- mov ax, B - перемещает значение переменной B в регистр ax.
- mov bl, 3 - перемещает значение 3 в регистр bl.
- imul bl - выполняет умножение регистра bl на содержимое регистра ax и помещает результат в регистр ax.
- sub cx, ax - вычитает значение регистра ax из регистра cx.
- mov ax, C - перемещает значение переменной C в регистр ax.
- mov dx, 0 - перемещает значение 0 в регистр dx.
- mov bx, 3 - перемещает значение 3 в регистр bx.
- idiv bx - выполняет деление регистра bx на содержимое регистра ax и помещает частное в регистр ax, а остаток от деления в регистр dx.
- add cx, ax - прибавляет значение регистра ax к значению регистра cx.
- mov ax, 6 - перемещает значение 6 в регистр ax.
- imul cx - выполняет умножение регистра cx на содержимое регистра ax и помещает результат в регистр ax.
- mov cx, ax - перемещает значение регистра ax в регистр cx.
- add cx, 10 - прибавляет значение 10 к значению регистра cx.
- mov X, cx - перемещает значение регистра cx в переменную X.
- mov ax, 4C00h - перемещает значение 4C00h в регистр ax.
- int 21h - выполняет интерполяцию регистра ax с помощью функции BIOS.
- main endp - завершает определение процедуры main.
- end main - завершает программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д