Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по ассемблеру   Найти похожие ветки 

 
Grande   (2002-08-22 15:00) [0]

Есть задание: написать прогу, которая считает количество определенных символов в заданной строке, выводит эту строку в центре экрана, выводит число символов. Вот прога. которую я написал с помощью методички :
TITLE Chars

STSG Segment Para Stack "stack"
DW32 DUP(?)
STSG ENDS
DATSG Segment Para "data"
N1 DB"строка, которую хотелось бы вводить при помощи процедуры read"
;N1DB 60 DUP(?)
N2 DB "ФИО автора"
LETDB"р"
DATSG ENDS
CODESG Segment Para "code"

StartPROCFar
ASSUME CS:CODESG, DS:DATSG, SS:STSG, ES:DATSG
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATSG
MOVDS,AX
MOVES,AX
CALLClrSc
;CALLRead
CALLCurs
CALLProg
;CALLOutSt
CALLCurs1
CALLOutR
CALLCurs2
CALLOutF
RET
;--------------------------------------------
;Процедура очистки экрана
ClrScPROCnear
MOVAX,0600h
MOVBX,07h
MOVCX,0000
MOVDX,0A4Fh
INT10h
RET
ClrScENDP
;--------------------------------------------
;Процедуры установки курсора на позицию
CursPROCnear
MOVAH,02
MOVBH,00
MOVDX,0C01h
INT10h
RET
CursENDP

Curs1PROCnear
MOVAH,02
MOVBH,00
MOVDX,0E05h
INT10h
RET
Curs1ENDP

Curs2PROCnear
MOVAH,02
MOVBH,00
MOVDX,100Ah
INT10h
RET
Curs2ENDP
;---------------------------------------------
;процедура, которая должна читать символы с клавы и
;записывать их в область данных определенных N1.
ReadPROCnear
LEADI,N1
MOVAH,0Ah
INT21
RET
ReadENDP
;---------------------------------------------
;Процедура собственнно программы, которая должна сравнивать
;поочереди все символы из N1 с символом из LET, считать кол-во совпадений
;в регистре BL.
ProgPROC near
MOVBL,0
CLD
MOVCX,75
LEASI,N1
MET1:CMPS[SI],LET
JNEMET2
ADD BL,1
MET2:INCSI
LOOPMET1
;Дабы исключить сброс результатов счета тут же выводим результат.
MOVAH,2
MOVDL,BL
ADDDL,2Fh
INT21h

ProgENDP
;---------------------------------------------
;Вывод строки N1.
OutStPROCnear
CLD
LEADI,N1
MOVAH,2
MOVCX,75
OUT1:MOVDL,[DI]
INT21h
INCDI
LOOPOUT1
RET
OutStENDP
;----------------------------------------------
;Вывод строки N2.
OutFPROCnear
CLD
LEADI,N2
MOVAH,2
MOVCX,27
OUT2:MOVDL,[DI]
INT21h
INCDI
LOOPOUT2
RET
OutFENDP
;----------------------------------------------
;Вывод результатов счета в виде процедуры.
OutRPROCnear
MOVAH,2
;MOVDL,AL
ADDDL,2Fh
INT21h
RET
OutRENDP
;----------------------------------------------
CODESGENDS
Startendp
ENDStart

Проблемы:
1. Процедура чтения символов с клавы проскакивает, не дожидаясь никакого ввода.
2. Стока N1 выводится на экра при выполнении процедуры Prog, хотя там такае не заложено !!!???
3. Результат счета всегда = 5.
4. Подскажите, есть ли код перевода на новую строку (типа Enter) ?


 
Игорь Шевченко   (2002-08-22 15:03) [1]

Пробелоглотатель выключи :-)


> 4. Подскажите, есть ли код перевода на новую строку (типа
> Enter) ?


0Ah - перевод на новую строку
0Dh - перевод каретки в начало строки

А как совместить ассемблер для DOS и Delphi ?


 
Grande   (2002-08-22 15:05) [2]

Точно!!! Вот, блин, ночная работа! Спасибо огромное!


 
Grande   (2002-08-22 15:06) [3]

я просто не знаю, куда еще можно обратиться :-(


 
Anatoly Podgoretsky   (2002-08-22 15:12) [4]

911


 
Grande   (2002-08-22 15:19) [5]

Звонил... не помогли :-)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
7-3640
Arkady
2002-06-22 08:16
2002.09.02
Печать


14-3598
nikolo
2002-08-05 18:12
2002.09.02
Freeware Advanced Application Controls 2.1


3-3248
Dino Ray
2002-08-12 01:03
2002.09.02
IDX поля типа CHAR?


7-3633
neo_max
2002-06-21 12:53
2002.09.02
Вопрос !!!!


1-3395
[BAD]Angel
2002-08-22 13:45
2002.09.02
Вопрос по Hint у





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский