Вычислить значение выражения - Assembler (223019)
Формулировка задачи:
Здравствуйте. Уравнение y = (12 + 3/8+6)*3+12.
Ошибки:
yyyy.asm(4) : invalid character in file
yyyy.asm(5) : must be in segment block
yyyy.asm(6) : syntax error : st
yyyy.asm(7) : segment, group, or segment register expected
Как вывести значение y на экран?
И что в этом коде еще не хватает?
data segment y db 0 ; описание переменной y в сегменте данных data ends st segment stack ‘stack’ ; описание сегмента стека db 128 dup(?) st ends assume cs: code, ds: data, ss: st code segment ;описание кодового сегмента start: mov ax,ds ; инициализация сегмента данных mov ds,ax mov ax,12 ; реализация сложения 12+3 add ax,3 mov bl,8 ; реализация сложения 8+6 add bl,6 div bl ;делим содержимое ax с содержимым bl mov ah,0 ; остаток обнуляем и результат умножаем на 3 mov bl,3 mul bl add ax,12 ; к произведению прибавляем 12 и заносим в y mov y,al mov ax,4c00h ;завершаем работу программы int 21h code ends end start
Решение задачи: «Вычислить значение выражения»
textual
Листинг программы
st segment stack 'stack' ; описание сегмента стека
Объяснение кода листинга программы
- В коде описывается сегмент стека с названием 'stack'. mov ax, data ; переносим адрес сегмента данных в регистр AX mov ds, ax ; загружаем адрес сегмента данных в регистр DS mov ax, 100h ; переносим значение 100h в регистр AX mov ss, ax ; загружаем значение 100h (адрес сегмента стека) в регистр SS
- В регистр AX переносится адрес сегмента данных.
- Адрес сегмента данных загружается в регистр DS.
- В регистр AX переносится значение 100h.
- Значение 100h (адрес сегмента стека) загружается в регистр SS. mov sp, offset top ; загружаем адрес вершины стека main proc far ; вход в процедуру main push bx ; сохранить значение регистра BX в стеке push cx ; сохранить значение регистра CX в стеке
- Адрес вершины стека загружается в регистр SP.
- Вход в процедуру 'main'.
- Значение регистра BX сохраняется в стеке.
- Значение регистра CX сохраняется в стеке. mov bx, 6 ; поместить значение 6 в регистр BX add bx, 3 ; добавить 3 к значению регистра BX
- В регистр BX помещается значение 6.
- К значению регистра BX добавляется 3. pop cx ; восстановить значение регистра CX из стека pop bx ; восстановить значение регистра BX из стека
- Значение регистра CX восстанавливается из стека.
- Значение регистра BX восстанавливается из стека. ret ; выход из процедуры main
- Выход из процедуры 'main'.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д