![]() |
eXeL@B —› Вопросы новичков —› Помогите с программой. Ассемблер |
Посл.ответ | Сообщение |
|
Создано: 27 июля 2013 22:51 · Личное сообщение · #1 После прочтения Дневники чайника. Чтива 0, виток0 решил написать программку, которая выводит алфавит))) а то сообщение автора ж заманило "Ну, а если юнга напишет свою программу, которая будет выводить на экран весь алфавит и его не будет заранее в данных (то есть он будет формироваться по ходу программы), тогда я завтра же произведу его в матросы ;). " ![]() Так вот код: mov bx,133h mov d,[bx],44434241h mov dx,bx mov ah,9h int 021 mov ah,10h int 016 mov d,[bx],48474645h; mov ah,9h int 021 mov d,[bx],52515049h mov ah,9h int 021 mov ah,10h int 016 int 020 add [bx][si],al add [bx][si],al al,0 Программа должна делать следующее: - выводит изначально ABCD - делается пауза до тех пор, пока не будет нажата какая либо клавиша - при нажатии на клавишу, выводит EFGHIYQR - делается пауза до тех пор, пока не будет нажата какая либо клавиша - при нажатии на клавишу, программа завершает работу Все пазы работают, код корректный, ну а вот либо кодировка либо что то... При выводе выводит иероглифы одни. Как исправить? ![]() |
|
Создано: 27 июля 2013 23:03 · Личное сообщение · #2 |
|
Создано: 27 июля 2013 23:15 · Личное сообщение · #3 OKOB, я пишу под ms dos пока, первый день ассм вижу в глаза. Про функции lea, msg ничего не знаю, и в примере обошлось без них. Может есть другой способ поставить $? Вот сам пример с которого я переписывал: 00000000: BB3301 mov bx,00133 ;" 3" 00000003: 66C70701020304 mov d,[bx],004030201 ;" " 0000000A: 66810730303030 add d,[bx],030303030 ;"0000" 00000011: 8BD3 mov dx,bx 00000013: B409 mov ah,009 ;" " 00000015: CD21 int 021 00000017: B410 mov ah,010 ;" " 00000019: CD16 int 016 0000001B: 66C70750505050 mov d,[bx],050505050 ;"PPPP" 00000022: 66812F1B1A1918 sub d,[bx],018191A1B ;" " 00000029: B409 mov ah,009 ;" " 0000002B: CD21 int 021 0000002D: B410 mov ah,010 ;" " 0000002F: CD16 int 016 00000031: CD20 int 020 00000033: 0000 add [bx][si],al 00000035: 0000 add [bx][si],al 00000037: 24 and al,000 как видно, здесь ничего подобного нет. Я в свое программе попробовал сам при записи в регистр строки дописать $, вышло что то ввиде mov d,[bx],43424124h - программа запустилась, иероглифов нет, но теперь вообще ничего не выводит. ![]() |
|
Создано: 27 июля 2013 23:19 · Личное сообщение · #4 Загрузи себе DOS Functions Reference pdf. Там все функции описаны подробно. ----- Give me a HANDLE and I will move the Earth. ![]() |
|
Создано: 27 июля 2013 23:29 · Личное сообщение · #5 |
|
Создано: 27 июля 2013 23:34 · Поправил: plutos · Личное сообщение · #6 |
|
Создано: 27 июля 2013 23:37 · Личное сообщение · #7 В камнях от интел обратный порядок хранения байт, ты поставил доллар первым символом строки, потому и ничего не вывелось. сделай mov d,[bx],24434241h - получишь ABC вот это и есть, то что я предлагал 00000033: 0000 add [bx][si],al 00000035: 0000 add [bx][si],al 00000037: 24 and al,000 db 4 dup(0), '$' четыре нуля начиная с адреса 133 и символ доллара по адресу 137. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 27 июля 2013 23:44 · Личное сообщение · #8 |
![]() |
eXeL@B —› Вопросы новичков —› Помогите с программой. Ассемблер |
Эта тема закрыта. Ответы больше не принимаются. |