|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.01.2011, 10:39 | #11 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
***********
Последний раз редактировалось vadimych; 16.01.2011 в 10:49. |
16.01.2011, 10:44 | #12 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
Привет всем.Если тема не потеряла актуальности. Я не большой дока в ассемблере, но на некоторые ошибки в коде обратил внимание.
В переводе в символьную форму: WRITE_HEX PROC NEAR PUSH CX ;сохранить знач.используемых регистров PUSH DX MOV DH,DL ;сохраним копию байта в DH MOV CX,4 SHR DL,CL ;взять старшие 4 бита в DL ?? как быть с младшими? CALL WRITE_HEX_DIGIT ;запись первой 16-ричной цифры MOV DL,DH AND DL,0FH ;взять мл. 4 бита в DL ?? а здесь пропали старшие биты CALL WRITE_HEX_DIGIT ;запись второй 16-ричной цифры POP DX ;восстановить используемые регистры POP CX RET WRITE_HEX ENDP В DX - 4 шестнадцатеричных цифры. Вы 2 из них теряете. Написал свой вариант. Прикрепил исходник и СОМ-файл. Надеюсь, разберётесь без комментариев. Последний раз редактировалось vadimych; 16.01.2011 в 10:53. |
16.01.2011, 14:26 | #13 |
Пользователь
Регистрация: 20.07.2010
Сообщений: 52
|
Привет ! Процедура WRITE_HEX выводит на экран один байт. В процессе работы она дважды обращается к процедуре WRITE_HEX_DIGIT(выводит одну 16-ричную цифру), сначала для вывода старшего полубайта, затем - младшего. Так что ничего не теряется. И потом, я уже говорил, что проверил программу в отладчике, прекрасно все выводит, проблема в том, что без отладчика она почему-то не хочет нормально работать.
|
17.01.2011, 04:14 | #14 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
Прошу прощения, поторопился с выводами. Да и в своём коде ошибку сделал: там вывод es и bx надо местами поменять.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Связный список векторов | Kekcuk | Общие вопросы C/C++ | 0 | 13.12.2010 21:00 |
Перемножение векторов | Smile_Eminsa | Общие вопросы C/C++ | 0 | 11.05.2010 09:14 |
Массив из 2 векторов | GreatMuse | Общие вопросы C/C++ | 6 | 30.01.2010 22:09 |
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов | zverushka | Помощь студентам | 18 | 20.02.2009 15:25 |