Консультация № 64730
29.11.2006, 12:18
0.00 руб.
0 1 1
программа типа com со следующим "шестнадцатеричным содержимым":

B8-23-01-05-25-00-8B-D8-03-D8-8B-CB-31-C0-CD-20

При просмотре программы AFD PRO У меня показывает следующее:
0100 42 INC DX
0101 382D CMP [DI],CH
0103 3233 XOR DH,[BP+DI]
0108 2D3031 SUB AX,3130
010B 2D3035 SUB AX,3530
010В 2D3235 SUB AX,3532
010E 2D3030 SUB AX,3030
0111 2D3842 SUB AX,4238

почему не получаеться следующее:
11B7:0100 B82301 MOV AX,0123 ; Внести значение 0123h в AX
11B7:0103 052500 ADD AX,0025 ; Прибавить значение 0025h к AX
11B7:0106 8BD8 MOV BX,AX ; Переслать содержимое AX в BX
11B7:0108 03D8 ADD BX,AX ; Прибавить содержимое AX к BX
11B7:010A 8BCB MOV CX,BX ; Переслать содержимое BX в CX
11B7:010C 31C0 XOR AX,AX ; Очистка AX
11B7:010E CD20 INT 20 ; Конец программы

спасибо за ответ.

Обсуждение

Неизвестный
29.11.2006, 17:20
общий
это ответ
Здравствуйте, Metrok!
Это из-за неверного понимания что такое символ и что такое код символа.
Если у вас в СОМ-файле записано
"B8-23-"
и так далее, то это СИМВОЛЫ. Т.е. первый байт - это символ "B" (а его код=0х42), второй - символ "8" (а его код=0х38), третий - симвлол "-" (код=0х2D).
т.е. вы вместо того чтобы записать символы с кодами B8, 23 и т.д. вы записали буквы, цифры и значки, которые описывают эти коды.
(другими словами, вместо "символ 1", "символ 2", "символ 3" и т.д. вы записали "первая цифра кода символа 1", "вторая цифра кода символа 2", "код символа тире/минус", "первая цифра символа 2", "вторая цифра кода символа 2", и т.д.)

Очевидно вы создали файл в чём-то вроде блокнота. А надо было использовать какой-нибудь шестнадцатеричный редактор, который позволяет записывать байты их кодами, (например, Hiew, hex workshop) или какими-нибудь продвинутыми текстовыми редакторами, которые имеют функцию шестнадцатеричного редактирования (вроде бы такая функция есть в Ultraedit, в GoldenPen точно есть).

Форма ответа