подготовка регистра AH в работе (предварительный вариант)
Опс! Сразу два байта вылетают в штрафбат. Это 00h и F7h. Черт возьми! Как же быть? Надо подумать… А что если вычислить значение не все сразу, а по частям? Короче говоря, нужно разложить F700h на ряд слагаемых, каждое из которых находилось бы в заданном интервале. Точнее даже не интервале, а каждый байт, входящий в слово, удовлетворял бы условию 80h >
x >
1Fh. Чем не головоломка? Любители математики легко найдут строгое решение, а всем остальным придется довольствоваться методом перебора. Вот, например, если от F700h шесть раз отнять по 292Ah, останется всего 4, которые можно накрутить обычным DEC AX (впрочем, в данном случае "крутить" совершенно необязательно, поскольку при AH == 9, значение регистра AL игнорируется). В общем, наш аналог MOV AX, 9 будет выглядеть так:
00000000: 2D 2A 29 sub ax,0292A
00000003: 2D 2A 29 sub ax,0292A
00000006: 2D 2A 29 sub ax,0292A
00000009: 2D 2A 29 sub ax,0292A
0000000C: 2D 2A 29 sub ax,0292A
0000000F: 2D 2A 29 sub ax,0292A
00000012: 48 dec ax
00000013: 48 dec ax
00000014: 48 dec ax
00000015: 48 dec ax