Вычислить значение выражения - 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 на экран? И что в этом коде еще не хватает?
Листинг программы
  1. data segment
  2. y db 0 ; описание переменной y в сегменте данных
  3. data ends
  4. st segment stack stack ; описание сегмента стека
  5. db 128 dup(?)
  6. st ends
  7. assume cs: code, ds: data, ss: st
  8. code segment ;описание кодового сегмента
  9. start:
  10. mov ax,ds ; инициализация сегмента данных
  11. mov ds,ax
  12. mov ax,12 ; реализация сложения 12+3
  13. add ax,3
  14. mov bl,8 ; реализация сложения 8+6
  15. add bl,6
  16. div bl ;делим содержимое ax с содержимым bl
  17. mov ah,0 ; остаток обнуляем и результат умножаем на 3
  18. mov bl,3
  19. mul bl
  20. add ax,12 ; к произведению прибавляем 12 и заносим в y
  21. mov y,al
  22. mov ax,4c00h ;завершаем работу программы
  23. int 21h
  24. code ends
  25. end start

Решение задачи: «Вычислить значение выражения»

textual
Листинг программы
  1. st segment stack 'stack'   ; описание сегмента стека

Объяснение кода листинга программы

  1. В коде описывается сегмент стека с названием 'stack'. mov ax, data ; переносим адрес сегмента данных в регистр AX mov ds, ax ; загружаем адрес сегмента данных в регистр DS mov ax, 100h ; переносим значение 100h в регистр AX mov ss, ax ; загружаем значение 100h (адрес сегмента стека) в регистр SS
  2. В регистр AX переносится адрес сегмента данных.
  3. Адрес сегмента данных загружается в регистр DS.
  4. В регистр AX переносится значение 100h.
  5. Значение 100h (адрес сегмента стека) загружается в регистр SS. mov sp, offset top ; загружаем адрес вершины стека              main proc far   ; вход в процедуру main push bx        ; сохранить значение регистра BX в стеке push cx        ; сохранить значение регистра CX в стеке
  6. Адрес вершины стека загружается в регистр SP.
  7. Вход в процедуру 'main'.
  8. Значение регистра BX сохраняется в стеке.
  9. Значение регистра CX сохраняется в стеке. mov bx, 6      ; поместить значение 6 в регистр BX add bx, 3     ; добавить 3 к значению регистра BX
  10. В регистр BX помещается значение 6.
  11. К значению регистра BX добавляется 3. pop cx        ; восстановить значение регистра CX из стека pop bx        ; восстановить значение регистра BX из стека
  12. Значение регистра CX восстанавливается из стека.
  13. Значение регистра BX восстанавливается из стека. ret           ; выход из процедуры main
  14. Выход из процедуры 'main'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут