Сборка: je/jne после cmp, вызывающая ошибку

Поэтому я пытаюсь изучить сборку, но я делаю это немного странным образом, используя командную строку WinXP и команду "debug" для программирования всего, что я считаю 16-битной сборкой (100/102/etc). - байтовые индексы) (79 - код ASCII для нижнего регистра y, конечно)

Ну, это код, который я набрал (не могу скопировать и вставить его после точки, потому что вы не можете прокручивать вверх) (я перефразирую байт-индексы, так простите меня)

0ADF:100 jmp 115 ; Execute starting at byte index 115
0ADF:102 db 'Type y or n$', 0D, 0A ; Storing the string "Type y or n"
0ADF:115 mov ah, 09 ; Executing beginning here here, we're printing a string now
0ADF:117 mov dx, 102 ; move the value at index 102 (the stored string) to what we're printing
0ADF:120 int 21 ; do it
0ADF:122 mov ah, 01 ; Action is getting input
0ADF:124 int 21 ; do it
0ADF:126 cmp al, 79 ; comparing the input to hex value 79, a lowercase y
0ADF:128 je 150 ; This is where it says the syntax error is -- jump if equal to index 150, which hasn't been written yet
----------------^Error
0ADF:128

"Ошибка" - это, конечно, то, что печатает командное приглашение, когда я печатаю его. Я понятия не имею, что я делаю неправильно, может кто-нибудь мне помочь?

2 ответа

Никогда не думал, я понял это. Полностью не ошибка кода (отсюда очевидная путаница), это программа - у нее есть предел того, как далеко вы можете прыгать в байтовых индексах. Спасибо, user.1, для ответа.


79 в десятичном значении равен 04Fh в гексагоне, который является капиталом Ascii O

121 в десятичном значении равен 079h в гексагоне, который является нижним регистром Ascii y

licensed under cc by-sa 3.0 with attribution.