Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 20:57   #1
notactic
Новичок
Джуниор
 
Регистрация: 23.03.2012
Сообщений: 2
По умолчанию Интерфейс программы под DOS

Из раздела "Помощь студентам"
Здравствуйте, Помогите пожалуйста справиться с поставленной задачей. В университете дали задание: "Написать подпрограмму для выборки и фиксации местоположения всех элементов, имеющих нечетный паритет, из некоторого массива двойных слов без знака. С помощью этой подпрограммы обработать два массива. Для передачи параметров использовать стек."
Написание кода для решения подобной задачи труда не составило, но вот вторая часть задания состоит в написании интерфейса к данной программе, т.е. ручного ввода данных и вывода результатов на экран. Тут я понял, что полный 0 в этой области. Помогите пожалуйста с этим заданием, я уже просто не знаю что делать(

Код :
Цитата:
.286
Name Proga
; описание констант

; описание переменных
Data segment
x1 dd 87654321h,12345678h,98765432h,87654 321h ; входной массив
max1 label word
len1 = (offset max1 - offset x1)/type x1
Y1 dd len1 dup (0) ; выходной массив
F1 dw len1 dup (0) ; переменная для фиксации метополжения

X2 dd 12345678h,23456789h,98765432h,87654 321h,22345678h,22456789h,98762432h, 85654321h ; входной массив
max2 label word
len2 = (offset max2 - offset x2)/type x2
Y2 dd len2 dup (0)
F2 dw len2 dup (0)
Data ends

Stack SEGMENT
DW 32 dup(?)
StkTOp LABEL word
Stack ends

Code SEGMENT
ASSUME CS: Code, DS: Data, ES: Data, SS: Stack

; Здесь описываются подпрограммы

Vybor proc
push bp
mov bp, sp
mov cx, [bp + 4] ; счетчик. кол-во чисел во входном массиве.
mov bx, [bp + 6] ; адрес фиксации местополжения
mov di, [bp + 8] ; адрес выходного массива
mov si, [bp + 10] ; адрес входного массива

M1: mov ax, [si+2] ; загружаем в регистр АХ старшее слово
mov dx, [si] ; загружаем в регистр DX младшее слово
XOR ax, dx
XOR al,ah
JPE M2 ; если четный паритет на М2

mov ax, [si+2] ;перезаписываем старшее слово
mov [di+2], ax ; производим выборку старшего слова
mov [di], dx ; производим выборку младшего слова
mov [bx], si ; фиксируем местоположение
add di, 4 ; модифицируем адрес выборки
add bx, 2 ; модифицируем адрес местоположения

M2: add si, type x1 ; переходим к следующему числу
dec cx ; уменьшаем цикл на 1
JNZ M1 ; если СХ не равен нулю тогда повторяем
pop bp
ret 8
Vybor endp

; Основная программа
Start:
mov AX, Data
mov DS, AX
mov ES, AX
mov Ax, Stack
mov SS, AX
mov SP, StkTop


lea ax, X1 ; передача параметров через стек
push ax
lea ax, Y1
push ax
lea ax, F1
push ax
mov ax, len1
push ax
call Vybor ; вызываем процедуру

lea ax, X2
push ax
lea ax, Y2
push ax
lea ax, F2
push ax
mov ax, len2
push ax
call Vybor

code ends
end start

Последний раз редактировалось notactic; 10.03.2013 в 21:00.
notactic вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DOS-программы под WINDOWS 7 ? vpm Windows 40 29.11.2012 18:49
Графический интерфейс в DOS Maksimall89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 21.12.2011 17:23
Из Dos под Win Nozema Фриланс 3 30.10.2009 17:34
Интерфейс для программы написанной в MS-DOS Скарам Общие вопросы C/C++ 6 15.05.2009 20:37
C++ под DOS. Функции Xeon332 Общие вопросы C/C++ 34 29.11.2008 18:01