Проверить программу - Assembler
Формулировка задачи:
Значения исходных данных, которые должны храниться в сегменте данных,
определяются выражениями:
Х1=№В*(-1)^№В
Х2=(-1)№В+1*(№Г*№В)
Х3=(-1)№В+2*(№Г*№В+№Г)
Х4=(-1)№В+3*№Г
где №В – 21, №Г – 351500
Помогите разобраться, правильно ли написана программа.
; Сегмент стека Sseg SEGMENT STACK 'stack' DB 256 DUP (?) Sseg ENDS ; Сегмент данных Dseg SEGMENT 'data' x1 db 0ffh x2 db 0Dh x3 db 0e6h x4 db 0Dh x5 db ? x6 dw ? x7 db ? dvx db ? mdx db ? Dseg ENDS ; Сегмент кода Cseg SEGMENT 'code' ASSUME CS:Cseg, DS:Dseg, SS:Sseg ; Головная подпрограмма Main PROC FAR ; Подготовимся к возврату в операционную систему PUSH DS MOV AX, 0 PUSH AX ; Настроим DS на наш сегмент данных MOV AX, Dseg MOV DS, AX ; Делаем вычисления mov ax,0 ; X1+X2 mov al,x1 add al,x2 mov x5,al ; X3*X2 mov al,x2 imul x3 mov x6,ax ; X2&X4 mov al,x2 mov x7,al mov ah,x4 and x7,ah ; Запись в стек X2 mov ax,0 mov al,x2 push ax ;X3/X1 mov al,x3 ;делимое cwd;подготовки к операции деления, для которой размер делимого в два раза больше размера делителя div x1 ;частное в al, остаток в ah mov dvx,al mov mdx,ah ; Завершение программы и передача управления первому оператору в PSP pop ax RET Main ENDP Cseg ENDS END Main
Решение задачи: «Проверить программу»
textual
Листинг программы
mov ax, 4C00h int 21h
Объяснение кода листинга программы
- Устанавливается значение переменной
ax
равное4C00h
(это значение является кодом завершения программы для функции выхода из программы в DOS). - Выполняется прерывание
21h
(данное прерывание вызывает сервис операционной системы DOS).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д