|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.12.2009, 22:29 | #1 |
Регистрация: 13.12.2009
Сообщений: 6
|
Вывод в резидентной части программы
a db '123456789'
d dw 0 c db 0 mov si,0 m1: mov ah,02 mov bh,00 mov dh,18 mov dl,c int 10h mov ah,0ah mov al,a[si] mov bh,0 mov cx,1 int 10h inc si inc c cmp si,8 jbe m1 вот этот вывод находиться в резидентной части. и выводит совсем не числа(какие-то значки). в чём проблема? если кинуть в отдельную прогоу, то всё прекрасно выводиться. |
17.12.2009, 22:40 | #2 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
так думаю что в конце строки не хватает знака "$", а вообще пиши полный код программы
|
17.12.2009, 22:41 | #3 |
Регистрация: 13.12.2009
Сообщений: 6
|
.286
CSEG SEGMENT ASSUME CS:CSEG, DS:CSEG, SS:CSEG org 100h start: jmp init oldint9 dd ? dw 0ABCDh int9: push AX ;Сохранение регистров push BX push CX push DX push BP push ES push DS xor AX,AX ;Выход при Ctrl+X mov ES,AX mov AL,ES:0417h test AL,00000100b jz no in AL,60h cmp AL,2Dh ;Сравнение со скан кодом X (2Dh) je unload1 cmp AL,31 ;Сравнение со скан кодом S (1Fh) je stat no: jmp noact unload1: jmp unload stat: a db '123456789' d dw 0 c db 0 mov si,0 m1: mov ah,02 mov bh,00 mov dh,18 mov dl,c int 10h mov ah,0ah mov al,a[si] mov bh,0 mov cx,1 int 10h inc si inc c cmp si,8 jbe m1 noact: pop DS ;Восстановление регистров pop ES pop BP pop DX pop CX pop BX pop AX jmp CSldint9 ; вернемся к старому обработчику unload: push DS mov AX,2509h ;Восстановление исходного ;вектора 9 прерывания lds DX,CSldint9 int 21h pop DS mov ES,CS:002Ch ;Выгрузка окружения mov AH,49h int 21h push CS ;Выгрузка программы pop ES mov AH,49h int 21h jmp noact endrz: mes_l db 'Rezident loaded',0Dh,0Ah,'$' mes_nol db 'Rezident is loaded',0Dh,0Ah,'$' init: mov AX,3509h ;Проверка на повторную загрузку, int 21h ;сохранение старого cmp ES:[BX-2],0ABCDh ;и установка нового вектора 9 прер. je exit mov word ptr oldint9+2,ES mov word ptr oldint9,BX mov AX,2509h mov DX,offset int9 int 21h mov AH,9 mov DX,offset mes_l int 21h mov DX,offset endrz ;Завершаем программу, int 27h ;оставляя резидентную часть exit: mov AH,9 mov DX,offset mes_nol int 21h mov AX,4C00h int 21h CSEG ENDS END start вот полный код |
17.12.2009, 23:07 | #4 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
как сложно читать твой код!
одделяй данные от кода и процедур! Ты сам в них не запутался.......?? |
17.12.2009, 23:11 | #5 |
Регистрация: 13.12.2009
Сообщений: 6
|
да не запутался.
у меня не работает вывод в резидентной части. точнее он работает, но выводит не то что надо. |
17.12.2009, 23:42 | #6 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
мой совет....разбей программу на несколько этапов, указание меток, пропиши "заглушки" в этом коде очень много так сказать ошибок....
когда разобьеш программу сам увидиш...не пиши код вместе с данными процесор принимает их за команды. |
17.12.2009, 23:48 | #7 |
Регистрация: 13.12.2009
Сообщений: 6
|
не резидентная часть работает.
она затирается про контрол х и чего-то пишет при контрол s защита от повторной загрузки работает вот когда я в резидентне хочу вывести символ, что я должен в ds указать? |
17.12.2009, 23:55 | #8 |
Форумчанин
Регистрация: 26.04.2009
Сообщений: 270
|
вот послушай перво наперво ты должен сделать строки типа
mes_l db 'Rezident loaded',0Dh,0Ah,'$' mes_nol db 'Rezident is loaded',0Dh,0Ah,'$' вывести за приделы кода... потом прописать выход из программы кода INT20 и разбей программу на процедуры типа имя PROC .... .... имя endP сам поймеш как это удобно |
18.12.2009, 00:01 | #9 |
Регистрация: 13.12.2009
Сообщений: 6
|
у меня эта часть работает.
и эти mes у меня выводятся, с ними всё ок. мне нужен вывод в резидентной части. хотелось бы понять почему выводиться не то, что прописано в строке. |
18.12.2009, 00:12 | #10 |
Регистрация: 13.12.2009
Сообщений: 6
|
так я понял что у меня Ds пуст, что мне туда кинуть?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
линейные программы консольный ввод и вывод | DjDeniels-61 | Помощь студентам | 1 | 20.11.2009 09:23 |
Создание резидентной программы (обработчик прерывания). | Петруха | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 23.03.2009 16:31 |
вывод сообщения при закрытии программы | tiger | Помощь студентам | 4 | 27.08.2008 23:31 |
Создание резидентной программы | DenisVR | Свободное общение | 2 | 07.11.2007 19:42 |
Вывод части текста из файла | CoDeR | Общие вопросы Delphi | 10 | 16.08.2007 14:30 |