![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 22.06.2016
Сообщений: 1
|
![]()
Привет всем! Не удается понять смысл работы программы. Т.е. понятно, что программа нужна для вывода символов на определенно настроенный экран, но вот логику работы программы уловить не получается. Сам код:
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 - перевод строки и нулем" |
![]() |
![]() |
![]() |
#2 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 05.09.2016
Сообщений: 135
|
![]()
В книге Майко этот пример вроде был.
Немного о GoAsm.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
Такие метки вроде Абель ставил, а ТС просто переделал его пример под FASM
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 20.02.2015
Сообщений: 1,226
|
![]()
Ну если программа работает, то что именно не понятно, вроде же всё указано? В отладчике можешь посмотреть работу программы. И вообще, какие тебе нужны комментарии, MOV CX,99, типа в регистр cx заносим 99, там же комментарии на ключевых местах имеются. Советую прочитать азы ассемблера и о использованных тут командах, знаешь, займет у тебя это всё от силы 4 часа, дерзай!
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
некропост. уже почти три месяца прошло.
изначальный пост от 22 июня. Автор темы уже давно про ваш ассемблер и думать забыл, а вы всё обсуждаете... |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 05.09.2016
Сообщений: 135
|
![]()
Преподаватель правильно всё написал. Вместо пустых строк вставьте свой код. Там ещё нужно много кода добавлять. Поучите у Г.В.Майко строки, определите начало строки в регисте DS вот в общем и всё. И в задании всё то-же.
Немного о GoAsm.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не получается разобраться в коде | 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 |