Проверить программу - 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

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

  1. Устанавливается значение переменной ax равное 4C00h (это значение является кодом завершения программы для функции выхода из программы в DOS).
  2. Выполняется прерывание 21h (данное прерывание вызывает сервис операционной системы DOS).

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

8   голосов , оценка 4 из 5