Форум: "Основная";
Текущий архив: 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