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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2016, 15:34   #1
Michel20132013
Новичок
Джуниор
 
Регистрация: 22.06.2016
Сообщений: 1
По умолчанию Не получается разобраться в экзаменационном задании. Cрочно!

Привет всем! Не удается понять смысл работы программы. Т.е. понятно, что программа нужна для вывода символов на определенно настроенный экран, но вот логику работы программы уловить не получается. Сам код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
use16

org 100h
jmp start
LABEL BUFFER BYTE
LONG db ? ;Текущая длина строки
BASELONG DB 99 DUP('') ;Длина буффера
MAXLONG DB 99 ;Максимальная длина буффера
prompt db 'TEXT?','$'
start:
call Q10CLR ;Настройка параметров экрана
a20:
mov dx,0000
call Q20CURS ;Установка курсора
call B10PRMP
call D10INPT ;Непосредственно ввод

call Q10CLR ;
cmp [LONG],00
je a30
call E10CODE
call F10CENT

MOV SI,BASELONG
MOV AH,0EH
MOV AL,[SI]
MOV BH,00
MOV CX,99
INT 16H
a30:
int 20h

B10PRMP:
mov ah,40h ;Видеобуффер
mov dx,prompt ;Загружаем
int 21h
ret

D10INPT:
MOV AH,0AH ;Ввод строки
MOV DX,BASELONG ;Загрузка буффера клавиатуры
INT 21H
RET

E10CODE:
MOV BH,00
MOV BL,[LONG]
MOV [BASELONG+BX],'$'
RET

F10CENT:
MOV DL,[LONG]
SHR DL,1
NEG DL
ADD DL,40
MOV DH,12

MOV AH,09H
MOV DX,BASELONG
INT 21H
RET

Q10CLR:
MOV AX,0600H
MOV BH,100
MOV CX,0000
MOV DX,184FH
INT 10H
RET

Q20CURS:
MOV AH,02
MOV BH,100
INT 10H
RET


Прошу помощи конкретно в описании работы программы, и ее комментировании.

Также привожу текст задания:
"Написать программу ввода строки с консоли. Перед вызовом, аргумент функции Buffer должен указывать на массив, размер которого должен быть достаточным для ввода строки, заверш. символом "Enter" и двух байтов. Первый байт указывает на максимальный размер строки, второй реальный размер строки. Сама строка должна завершаться символами NL - новая строка. LF - перевод строки и нулем"
Michel20132013 вне форума Ответить с цитированием
Старый 22.06.2016, 16:30   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от Michel20132013 Посмотреть сообщение
Также привожу текст задания:
"Написать программу ввода строки с консоли. Перед вызовом, аргумент функции Buffer должен указывать на массив, размер которого должен быть достаточным для ввода строки, заверш. символом "Enter" и двух байтов. Первый байт указывает на максимальный размер строки, второй реальный размер строки. Сама строка должна завершаться символами NL - новая строка. LF - перевод строки и нулем"
Написал программу? Нет -- скоммуниздел... Но это не страшно, не все изобретают велосипед, можно воспользоваться уже готовым. А вот дальше идет полная профнепригодность -- Michel20132013 может разобраться в работе чужой программы? Нет, тогда баба с возу кобыле легче... Нах Родине такие програмизды, не твоё это, освободи место и иди в торговлю или улицы подметай... Удачи!
Mikl___ вне форума Ответить с цитированием
Старый 05.09.2016, 06:02   #3
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 133
По умолчанию

В книге Майко этот пример вроде был.
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Старый 05.09.2016, 07:25   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Nif-naf Посмотреть сообщение
В книге Майко
Такие метки вроде Абель ставил, а ТС просто переделал его пример под FASM
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 05.09.2016, 11:14   #5
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 1,226
По умолчанию

Ну если программа работает, то что именно не понятно, вроде же всё указано? В отладчике можешь посмотреть работу программы. И вообще, какие тебе нужны комментарии, MOV CX,99, типа в регистр cx заносим 99, там же комментарии на ключевых местах имеются. Советую прочитать азы ассемблера и о использованных тут командах, знаешь, займет у тебя это всё от силы 4 часа, дерзай!
oldsnowman вне форума Ответить с цитированием
Старый 05.09.2016, 11:39   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

некропост. уже почти три месяца прошло.
изначальный пост от 22 июня.
Автор темы уже давно про ваш ассемблер и думать забыл, а вы всё обсуждаете...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.09.2016, 12:28   #7
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 133
По умолчанию

Преподаватель правильно всё написал. Вместо пустых строк вставьте свой код. Там ещё нужно много кода добавлять. Поучите у Г.В.Майко строки, определите начало строки в регисте DS вот в общем и всё. И в задании всё то-же.
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается разобраться в коде stck Общие вопросы C/C++ 5 22.12.2011 17:24
Не получается разобраться с xlat (assembler) sunny_alice Помощь студентам 9 12.05.2011 00:05
Разобраться в задании по созданию ПО для работы с БД на Borlande DaysOfGrace Помощь студентам 0 09.03.2011 17:02
Пытаюсь разобраться в задании fs444 Microsoft Office Excel 12 12.01.2010 12:57