ZX-Ревю Украина 1996 №1 1995 г.

В помощь начинающему программисту - преобразование двухбайтных чисел в стринги и стрингов в двухбайтные числа.


Преобразование двухбайтных чисел в стрмнгн ■ стрмнгов в двухбайтные числа.

111 rmniiiiuiiniiiiiiiiiiiiiiii'

Довольно часто при программировании в невинных кодах приходится выводить иа вкраи числа, записанные в паияти компьютера в двухбайтной виде или переводить введенное по цифраи число в двухбайтную форму.

Приведенные нияе две процедуры реаают эти задачи. Первая процедура (Листинг 1) в строке 40 считывает исходное двухбайтное число нэ ячеек 23->28 и 23729.

Далее происходит следующее: в регистровую пару DE загружается число 6SS36-10000, т.е. SSS36. Процедура SIGN складывает содер-кииое HL с содерхииым DS, фактически, уиеньаая содеряимое HL на 10000. При этой яклвчается счетчик я регистре С (увеличенный на 4В для получения ASCI I кодов). Если содеркииое ML больве 10000 (флаг CARRY включен), то продолжается сложение. Если же при очередной сложении переполнения HL не получается, то в строках 210-280 содеркииое HL увеличивается иа 10000 и становится реально иеиьае 10000. В итоге иы а регистре С получаем ASCII-код первой цифры пятиразрядного числа, иакодяяегося в HL. Далее те ж» действия происходят для 2-ой, З-вЯ и 4-ой цифр. Последижл цифра выводится уже непосредственно процедурой PRINT. Для вывода на

['"ТАТтТ'ТАТАТАЧ^АТ'ТтТАТтЧТ"'!

11111111

innnri

'^"aiaiaiiwiii'^fluuwa1

команда RST «10.

Коса* ассемблерного дмстимга приводится дамп невинных кодов с контрольными суммами.

00010 00020 ОООЗО 00040 00050 00060 00070 00080 00090 00100 00110 00120 00130 00140 00150 00160 00170 00180 00190 00200 00210 00220 00230 00240 00250 00260 00270 00280 00290 00300 00310 00320 00330 00340 00350 00360 00370 00380 00390

SIGN LOOP

PRINT

Листинг 1

NUM

ORG 32500 EQU 23728

LO HL,(NUM) L0 DE,55536 CALL SIGN LO OK.64536 CALL SIGN LD DE,65436 CALL SIGN LD DE,65526 CALL SIGN LD A.L ADD A,«30 CALL PRINT RET

LO С.Я2Г INC С ADD HL.DE JR С.LOOP LO A.D CPL LO D.A LD E.A CPL

LD E.A INC DE ADD HL.DE LD А.С CALL PRINT RET

PUSH HL PUSH DE PUSH ВС RST »10 POP ВС POP DE POP HL RIT

7KP4 7EPC 7P04

7 РОС 7Г14 7Г1С 7P24

7P2C

Даип мавинных кодов:

2A 80 SC 11 ГО D8 CD 16:64 7F 11 18 PC CD 16 7P 11:91 9C ГГ CD 16 7Г 11 Г6 ГГ:86 CD 16 7Г 7D C6 30 CD 29:56 7Г C9 0E 2Г 0C 19 38 ГС:71 7A 2Г 57 7B 2Г 5Г 11 19:00 79 CD 20 7Г С9 ES BS CS:D9 D7 Cl 01 El С9 00 00 00:BE

выполняет действия, обратные тан,

которые производит первая проце- 00010

дура. 00020

Предполагается, что стринг, 00030

пзобраяающий число, находится с 00040

адреса 23296 и запыхается кодой 00050

13. 00060

На первой ааге цикла 60-200 в 00070

регистровую пару ВС попадает со- 00080

держииое аккумулятора. Затаи суи- 00090

иируется содеряииое регистровых 00100

пар HL и ВС. 00110

На второй шаге в строках 00120

100-150 происходит, фактически, 00130

уинэхение содержимого HL на 10. 00140

Далее а регистровую пару ВС эасы- 00150

лается содержиное аккунулятора и 00160

ас6 повторяется снова. 00170

Проверка на конец стринга про- 00180

изводится в строках 60-70 и если 00190

конец достигнут, то выполняется 00200 переход на конец процедуры. При

этой содержиное HL помещается в 00210

ячейку 23728. 00220

Посла ассеиблериого листинга приводится дяип иаяинных кодов с контрольными сумиами.

Следует отметитв, что процеду- 7ГЗА

ры ассемблированы почти подряд, 7Г42

что позволяет их использовать как 7Г4А

общий блок кодов длиной 100 байт. 7Р52 При этой нужно обращать вмииание на корректное использование паияти обеини процедурами,

ORG 32570 EQU 23296 EQU 23728 LD HL, 0 LD DE.STRING LD A,(DE) CP ROD JR X.END SOB «30 ADD HL.HL LD B.H LD C.L ADD HL.HL ADD HL.HL ADD HL,ВС LD В.Я00 LD C.A ADD HL.BC INC DE JR NEXT

LD (NUM).HL RET

END

Дамп маямииых кодов:

: 21 00 00 11 00 SB 1A FF:SE

: 0D 28 OF D6 30 29 44 4D:CS

: 29 29 09 06 00 4F 09 13:95

: 18 EC 22 80 SC C9 00 00:CC

STRING HUM

NEXT




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Мысли - Клайв Cинклер знал о производимых его компанией компьютерах так мало, что не мог ответить на элементарные вопросы, об их устройстве.
Экспертиза - подробно рассмотрена игра "Hostages". Вы участник операции "Юпитер".
BBS - CHESS po CDOS-модему. Инструкция по игре в шахматы (юмор). Список работающих BBS в Минске.
Очумелые ручки - Gigascreen для Пентагона с интерлейсом.
SрeXtreаm'2003 - Нeбольшой очeрк.

В этот день...   29 апреля