Как работать с программой? - Assembler/MASM

Узнай цену своей работы

Формулировка задачи:

Ребята, пожалуйста, помогите. Преподаватель сказал, что работать только через MASM. Включил готовую (*.exe) в cmd, но пустая строка... Наверное, неправильно написал. Уже 1 мес. мучаюсь с этой программой.
Name Var17
    .286
Data    Segment                         ;Cегмент данных
Arr1ASC DB  1,2,0,4,5,6,7,8,9,0             ;Описание входных
Arr2ASC DB  1,3,2,8,0,7,4,4,5,5,6,1,7,0,8,6,9,9,0,7 ;массивов
Arr1BCD DB  5 DUP(?)                    ;Описание выходных
Arr2BCD DB  10 DUP(?)                   ;массивов
Data    EndS
 
Stack   Segment     ;Cегмент стека
    DW  16 DUP(?)
StkTop  Label   word        ;Фиксация вершины пустого стека
Stack   EndS
 
Code    Segment     ;Сегмент программного кода
 
        Assume  CS:Code, DS:Data, SS:Stack
 
    ;Описание подпрограммы
Preobr  Proc
    push    bp
    mov bp,sp       ;Привязка к вершине стека
        mov cx,[bp+4]   ;Чтение параметров
        mov     di,[bp+6]   ;из стека
    mov si,[bp+8]
M1: mov al,[si+1]   ;Чтение десятичного ASCII-байта
    shl al,4        ;Сдвиг на 4 разряда влево
    or  al,[si]     ;Сборка BCD-байта из двух ASCII-байт
    mov [di],al     ;Запись BCD-байта в выходной массив
    inc di      ;Модификация адреса элемента выходного массива
    add si,2        ;Модификация адреса элемента входного массива
    loop    M1      ;Цикл по всем элементам входного массива
    pop bp
        ret 6       ;Возврат с исключением параметров из стека
Preobr  Endp
 
    ;Макроуровень программы
Start:  mov ax,Data ;Системная подготовка:
        mov ds,ax       ;инициализация pегистpа
    mov ax,Stack    ;сегментных
        mov ss,ax       ;региcтров
    lea sp,StkTop   ;и указателя стека
 
    ;передача параметров первого массива
    push    offset Arr1ASC  ;массив десятичных ASCII-байтов
    push    offset Arr1BCD  ;массив BCD-байтов
    push    length Arr1BCD  ;длина массива десятичных ASCII-байтов
        call    Preobr      ;обработка массива
 
    ;передача параметров второго массива
    push    offset Arr2ASC  ;массив десятичных ASCII-байтов
    push    offset Arr2BCD  ;массив BCD-байтов
    push    length Arr2BCD  ;длина массива десятичных ASCII-байтов
        call    Preobr          ;обработка массива
 
Code    EndS
End Start

Решение задачи: «Как работать с программой?»

textual
Листинг программы
        call    Preobr          ;обработка массива
mov ax,4c00h
int 21h
Code    EndS

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


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

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

15   голосов , оценка 4.067 из 5