Whatis.Ru

Информация о компьютерах доступным языком
Назад на сайт

Вы не зашли.


#1 16-12-2016 14:06:24

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Вопросы по теме "Исходники на ассемблере"

Всем привет!
Получаю письма мылом и в личку с различными вопросами по теме, поэтому решил создать отдельную.., где можно будет обсудить ошибки (а кто не ошибается?) и прочии/связанные вопросы по указанной теме.

Пользователь: K1905
тема: РАБОТА СО-СТРОКАМИ В ПАМЯТИ
топик: http://whatis.ru/forum/viewtopic.php?pid=60116#p60116
---------------------------------------------

При отладке на TASM не получается вывод пяти первых символов и вывод "Operation completed",
попадаешь в бесконечный цикл с выводом трех символов. Скрин..

Input string....: 0123456789
Output string...: 56789   012   012   012

Ответ:
По сути мой пример кривой, и требует следующих поправок:

1. Нужно выделить приёмный буфер для строки в секции данных, т.к. инструкция STOSB пишет символ из AL по адресу ES:DI, а эта регистровая пара при запуске программы указывает на стек, что приводит к разрушению последнего:

; Состояние регистров при запуске COM-программы
;-----------------------------------------------
AX 0000  CX 00FF  DS:SI 2075:0100  CS:IP 2075:0100  BP 0000  ODITSZAPC |  Stack
BX 0000  DX 2075  ES:DI 2075:FFFE  SS:SP 2075:FFFE  FL 7202  001000000 | -08 0000
-----------------------------------------------------------------------| -06 0000
2075:0100| EB 37                JMP     Short 0139                     | -04 0000
2075:0102| 00 00                ADD     Byte ptr [BX+SI],AL            | -02 0000
2075:0104| 00 00                ADD     Byte ptr [BX+SI],AL            |> 00 0000
2075:0106| 00 00                ADD     Byte ptr [BX+SI],AL            | +02 20CD
2075:0108| 00 00                ADD     Byte ptr [BX+SI],AL            | +04 9FFF


2. Этот пример на FASM'e (*.com), и если Вы переписали его на TASM с моделью памяти 'SMALL' (*.exe), то на выходе можно получить ошибку, т.к. в моём коде не определены секции данных/кода.
Эта-же программа на Тасме будет выглядеть примерно так:

Код:

.386
.model  small        ; делаем DOS-exe (MZ-формат)
.stack  100h         ; выделяем 256-байт для стека

.data                    ; секция данных
buff    db  16 dup(0)    ; буфер в 16-байт для строки

mUser1  db  13,10,' Input string....: $'
mUser2  db  13,10,' Output string...: $'
mUser3  db  13,10,' ==================================='
        db  13,10,' Operation completed ! $'

.code                    ; секция кода
start:
     mov   ax,@data      ; настрим сегментные регистры
     mov   ds,ax         ;   ..на секцию данных
     mov   es,ax         ; 

     lea   dx,mUser1     ; приглашение на ввод
     call  Message       ; 

     lea   di,buff       ; DI = указатель на приёмный буфер
     mov   cx,10         ; длина строки ввода (цикла)
inpStr:                  ;
     call  getKey        ; ждём символ с клавы
     int   29h           ; выводим его на экран,
     stosb               ;   ..и сохраняем в ES:DI
     loop  inpStr        ; мотаем цикл СХ-раз. Строка считана в буфер.

     lea   dx,mUser2     ; мессага юзеру с результатом
     call  Message       ;

     lea   si,buff       ; теперь SI указывает на начало строки в буфере
     push  si            ;   ..запомним указатель в стеке..
     add   si,5          ; смещаемся на вторую половину строки
     mov   cx,5          ; сколько символов выводить
outStr1:                 ;
     lodsb               ; читаем символ в AL, из DS:SI
     int   29h           ; выводим его на экран
     loop  outStr1       ; мотаем цикл CX-раз..

     mov   al,' '        ; вставим пробел-разделитель..
     int   29h           ;

     pop   si            ; снимаем со-стека указатель на начало строки
     mov   cx,5          ; выводим первые(5) символов
outStr0:                 ;
     lodsb               ; читаем символ..
     int   29h           ; печатаем его
     loop  outStr0       ; мотаем цикл, пока CX не обнулится

     lea   dx,mUser3     ; выводим юзеру "Operation completed"
     call  Message       ;

     call  getKey        ; ждём клавишу, чтоб осмотреться
     mov   ax,4c00h      ;
     int   21h           ; выходим из программы

;------- ПРОЦЕДУРЫ ------------------------------------|
Message    proc
     mov   ah,9
     int   21h
     ret
Message    endp

getKey     proc
     xor   ax,ax
     int   16h
     ret
getKey     endp

end  start

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#2 17-12-2016 07:45:41

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Получил ваше пояснение,спасибо за внимание.Но успеха пока не имею.Ваша исправленная программа хорошо ассемблируется, но линкуется с фатальной ошибкой.У меня старая модель Windows XP, которая имеет DOS

C:\TASM\BIN>tasm 3
Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International
Assembling file:   3.ASM
Error messages:    None
Warning messages:  None
Passes:            1
Remaining memory:  451k

C:\TASM\BIN>tlink 3
Turbo Link  Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
Fatal: 32-bit record encountered in module 3.ASM

Ваши программы я делал вначале через отладчик fasmw17121 получал файл *com, потом через отладчик TASM TD.EXE производил отладку или через DEBUG.Я самоучка,ищу источники,читаю литературу и методом 'втыка' по немному осваиваю.Работаю на этих трудоемких отладчиках, пока для ознакомления 16-ти разрядных,в них мне легче
понимать ассемблирование.
Высылаю образец отладки,где мне кажется на конечном этапе надо внести небольшую поправку для выхода из цикла и получении сообщения Operation completed !!! $
      ДАМП ДО ТРАССИРОВКИ
  cs:0100►EB6E           jmp    0170 ↓                       ▲  ax 0000   │c=0
  cs:0102 0D0A20         or     ax,200A                      ■  bx 0000   │z=0
  cs:0105 49             dec    cx                           ▒  cx 0000   │s=0
  cs:0106 6E             outsb                               ▒  dx 0000   │o=0
  cs:0107 7075           jo     017E                         ▒  si 0000   │p=0
  cs:0109 7420           je     012B                         ▒  di 0000   │a=0
  cs:010B 7374           jnb    0181                         ▒  bp 0000   │i=1
  cs:010D 7269           jb     0178                         ▒  sp FFFE   │d=0
  cs:010F 6E             outsb                               ▒  ds 0B1D   │
  cs:0110 672E2E2E2E3A20 cmp    ah,cs:[eax]                  ▒  es 0B1D   │
  cs:0117 240D           and    al,0D                        ▒  ss 0B1D   │
  cs:0119 0A20           or     ah,[bx+si]                   ▒  cs 0B1D   │
  cs:011B 4F             dec    di                           ▒  ip 0100   │
  cs:011C 7574           jne    0192                         ▒            │
  cs:011E 7075           jo     0195                         ▼            │
◄■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒►┼────────────┴───
  ds:0000 CD 20 FB 9F 00 9A F0 FE ═ √Я ЪЁ■                   │  ss:0000 20CD
  ds:0008 1D F0 32 0B 09 08 0F 07 ↔Ё2♂○◘☼•                   │  ss:FFFE►0000
  ds:0010 81 05 56 01 1B 04 64 05 Б♣V☺←♦d♣                   │  ss:FFFC 0000
  ds:0018 01 01 01 00 02 04 FF FF ☺☺☺ ☻♦                     │  ss:FFFA 0000
  ds:0020 FF FF FF FF FF FF FF FF                            │  ss:FFF8 0000

  ds:0100 EB 6E 0D 0A 20 49 6E 70 ыn♪◙ Inp
  ds:0108 75 74 20 73 74 72 69 6E ut strin
  ds:0110 67 2E 2E 2E 2E 3A 20 24 g....: $
  ds:0118 0D 0A 20 4F 75 74 70 75 ♪◙ Outpu
  ds:0120 74 20 73 74 72 69 6E 67 t string 
  ds:0128 2E 2E 2E 3A 20 24 0D 0A ...: $♪◙
  ds:0130 20 3D 3D 3D 3D 3D 3D 3D  =======
  ds:0138 3D 3D 3D 3D 3D 3D 3D 3D ========
  ds:0140 3D 3D 3D 3D 3D 3D 3D 3D ========
  ds:0148 3D 3D 3D 3D 3D 3D 3D 3D ======== 
  ds:0150 3D 3D 3D 3D 0D 0A 20 4F ====♪◙ O
  ds:0158 70 65 72 61 74 69 6F 6E peration
  ds:0160 20 63 6F 6D 70 6C 65 74  complet
  ds:0168 65 64 20 21 21 21 20 24 ed !!! $
  ds:0170 BA 02 01 E8 39 00 FC 57 ║☻☺ш9 №W
  ds:0178 B9 0A 00 E8 36 00 CD 29 ╣◙ ш6 ═)
  ds:0180 AA E2 F8 BA 18 01 E8 26 кт°║↑☺ш&
  ds:0188 00 5E 83 C6 05 B9 05 00  ^Г╞♣╣♣
  ds:0190 AC CD 29 E2 FB B0 20 CD м═)т√░ ═
  ds:0198 29 BE FE FF B9 05 00 AC )╛■ ╣♣ м

   ТРАССИРОВКА ПРОГРАММЫ  3.ASM
  cs:0100►EB6E           jmp    0170 ↓              ip 0100 ;прыжок перехода на основную процедуру start: 
  cs:0170►BA0201         mov    dx,0102             ip 0170 ; приглашение на ввод Строки ввода..
  cs:0173►E83900         call   01AF                dx 0102 ;переход по адресу
                                                    ip 0173
    Метка message:
cs:01AF►B409           mov    ah,09                    sp FFFC    ;функция вывода на экран
                                                    ip 01AF
  cs:01B1►CD21           int    21                    ax 0900  ;прерывание с выводом сообщения на экран
                                                    ip 01B1
   Смотрим на экран
  Input string....sadСтрока ввода....smile3
  cs:01B3►C3             ret                        ax 0924 ;выход изпроцедуры
                                                    ip 01B3
    Переход в основную процедуру для продолжения
  cs:0176►FC             cld                        sp FFFE  ; флаг направления для 'lodsb'                                                 
                                                    ip 0176
  cs:0177►57             push   di                    ip 0177  ;занесение в стэк регистра di
  cs:0178►B90A00         mov    cx,000A             sp FFFC  ; длинна строки (цикл)
                                                    ip 0178
    Метка istr:
  cs:017B►E83600         call   01B4                cx 000A  ;переход по адресу
                                                    ip 017B
    Процедура presskey: (нажмите клавишуsmile3
    cs:01B4►31C0         xor    ax,ax                sp FFFA    ;выполняем обнуление регистра ax
                                                    ip 01B4   
  cs:01B6►CD16           int    16                    ax 0000    ;занесение символов на кран
                                                    ip 01B6 z=1 p=1
    При открытии экрана  вводим символы с клавиатуры с циклом по одному 0123456789 с=10
    Повторятся не будем,покажем конец цикла
    cs:01B8►C3             ret                        ax 0231    ;выход из процедуры                       
                                                    ip 01B8
  cs:017E►CD29           int    29                    sp FFFC    ; печатаем его
                                                    ip 017E
    Смотрим Дамп                                                   
  ds:0000 CD 20 FB 9F 00 9A F0 FE ═ √Я ЪЁ■                   ;до трассировки
  ds:0008 1D F0 32 0B 09 08 0F 07 ↔Ё2♂○◘☼•    

  ds:0000 30 31 32 33 34 35 36 37 01234567                 ;после трассировки
  ds:0008 38 39 32 0B 1E 15 0F 07 892♂▲§☼•                 

   
  cs:0180►AA             stosb                      ip 0180 ; сохраняем символ в 'DI'
  cs:0181►E2F8           loop   017B                di 000A  ;перехода нет           
                                                    ip 0181
  cs:0183►BA1801         mov    dx,0118                cx 0000  ;В регистр заносим данные выходной строки
                                                    ip 0183
  cs:0186►E82600         call   01AF                dx 0118 ;переход для вывода сообщения
                                                    ip 0186
    Метка message:(сообщение)
  cs:01AF►B409           mov    ah,09               sp FFFA ;функция вывода данных на экран
                                                    ip 01AF
  cs:01B1►CD21           int    21                    ax 0939 ;прерывание с выводом на экран
                                                    ip 01B1
    Смотрим на экран
Input string....: 0123456789
Output string...:

  cs:01B3►C3             ret                        ax 0924 ;выход из процедуры
                                                    ip 01B3
    Основная процедура   
  cs:0189►5E             pop    si                    sp FFFC ;вывод регистра si со стэка
                                                    ip 0189
  cs:018A►83C605         add    si,0005                sp FFFE    ;переместим указатель на вторую половину строки
                                                    ip 018A
  cs:018D►B90500         mov    cx,0005                si 0005    ; выводим 5 символов
                                                    ip 018D z=0
    Метка  ostr:
  cs:0190►AC             lodsb                      cx 0005 ; читаем символ..
                                                    ip 0190 
  cs:0191►CD29           int    29                    ax 0935    ; печатаем его
                                                    si 0006 
                                                    ip 0191   
  cs:0193►E2FB           loop   0190 ↑                ip 0193 ; мотаем цикл, пока CX не обнулится                                       
  cs:0190►AC             lodsb                        cx 0004   
                                                    ip 0190
  cs:0191►CD29           int    29                  ax 0936
                                                    si 0007
                                                    ip 0191
    Смотрим конец цикла   
  cs:0191►CD29           int    29                  ax 0939
                                                    si 000A
                                                    ip 0191   
  cs:0193►E2FB           loop   0190                ip 0193  ;перехода нет
  cs:0195►B020           mov    al,20               cx 0000  ; вставим пробел..
                                                    ip 0195
  cs:0197►CD29           int    29                    ax 0920 
                                                    ip 0197
    Смотрим на экран
     Input string....: 0123456789
Output string...: 56789
  cs:0199►BEFEFF         mov    si,FFFE                ip 0199 ; переместим указатель на начало строки
  cs:019C►B90500         mov    cx,0005             si FFFE ; выводим первые(5) символов
                                                    ip 019C
  cs:019F►AC             lodsb                        cx 0005 ; читаем символ..
                                                    ip 019F
  cs:01A0►CD29           int    29                    ax 0900    ; печатаем его
                                                    si FFFF
                                                    ip 01A0
  cs:01A2►E2EC           loop   0190 ↑                ip 01A2   
    Показываем конец цикла
  cs:0193►E2FB           loop   0190                ip 0193
  cs:0195►B020           mov    al,20               cx 0000
                                                    ip 0195
  cs:0197►CD29           int    29                    ax 0920

Неактивен

#3 17-12-2016 20:28:55

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905 написал:

..но линкуется с фатальной ошибкой
Fatal: 32-bit record encountered in module 3.ASM

У меня тасма нет, но попробуйте установить модель памяти "TINY",
т.е. собрать из исходника не *.exe, а *.com-файл

Вроде 32-битных инстукций там нет, но линкер откуда-то их обнаружил.
Сейчас скачаю Тасм, и посмотрю.. При создании сообщений, код лучше брать в теги "CODE" - решётка в окне отправки сообщений. Тогда читать код будет удобней..

А пока вот тот-же код на FASM'e. (раз-уж он у Вас есть)

Код:

;fasm-code..
;--------------
org  100h
jmp  start

buff    db  16 dup(0)    ; буфер в 16-байт для строки

mUser1  db  13,10,' Input string....: $'
mUser2  db  13,10,' Output string...: $'
mUser3  db  13,10,' ==================================='
        db  13,10,' Operation completed ! $'

start:
     mov   dx,mUser1     ; приглашение на ввод
     call  Message       ; 

     mov   di,buff       ; DI = указатель на приёмный буфер
     mov   cx,10         ; длина строки ввода (цикла)
inpStr:                  ;
     call  getKey        ; ждём символ с клавы
     int   29h           ; выводим его на экран,
     stosb               ;   ..и сохраняем в ES:DI
     loop  inpStr        ; мотаем цикл СХ-раз. Строка считана в буфер.

     mov   dx,mUser2     ; мессага юзеру с результатом
     call  Message       ;

     mov   si,buff       ; теперь SI указывает на начало строки в буфере
     push  si            ;   ..запомним указатель в стеке..
     add   si,5          ; смещаемся на вторую половину строки
     mov   cx,5          ; сколько символов выводить
outStr1:                 ;
     lodsb               ; читаем символ в AL, из DS:SI
     int   29h           ; выводим его на экран
     loop  outStr1       ; мотаем цикл CX-раз..

     mov   al,' '        ; вставим пробел-разделитель..
     int   29h           ;

     pop   si            ; снимаем со-стека указатель на начало строки
     mov   cx,5          ; выводим первые(5) символов
outStr0:                 ;
     lodsb               ; читаем символ..
     int   29h           ; печатаем его
     loop  outStr0       ; мотаем цикл, пока CX не обнулится

     mov   dx,mUser3     ; выводим юзеру "Operation completed"
     call  Message       ;

     call  getKey        ; ждём клавишу, чтоб осмотреться
     int   20h           ; выходим из программы

;------- ПРОЦЕДУРЫ ------------------------------------|
Message:
     mov   ah,9
     int   21h
     ret
getKey:
     xor   ax,ax
     int   16h
     ret

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#4 18-12-2016 15:54:05

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Получил последний исправленный Вами код,сделал сравнение с первым с сайта подленником,сделал замену
только одной команды вместо mov si,-2 команду выхода регистра si из стeка  pop si
Отладчик FASM очень быстро дает сразу ответ, на TASM сложнее подается отладка программ,зато подробнее можно получить ясность по командам,регистрами и флагам,что для изучения мне сейчас и надо.Сейчас я тренируюсь на готовых,чтобы на примерах понимать и решать в дальнейшем новые примеры и задачи. На сайте хорошая тематика
разнообразных программ,я даже пытаюсь и некоторые подаются, отладку выполнять отладчиком DEBUG.
Большое спасибо за помощь.
Простите за нескромный вопрос,я общаюсь с Тимуром?

Неактивен

#5 19-12-2016 09:21:27

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905, приветствую Вас! Да, я Тимур. smile3
Рад, что у Вас всё получается. Будут вопросы - пишите.
Только некоторые поправочки в терминологии, ато я вижу у Вас маленькая путаница..

1. Есть FASM/TASM/MASM, которые называются ассемблерами.
При помощи этих программ происходит компоновка/линковка программного кода (исходника).
На выходе ассемблера - получаем готовый к исполнению COM/EXE-файл.

2. Чтобы проверить работу готовой программы в по-шаговом режиме, его запускают из-под отладчика. Этот процесс называют 'трассировкой программы'. Можно посмотреть, что попадает в регистры на каждом шагу исполнения программы, что находится в памяти, и т.д. Он позволяет найти ошибки в коде, или подправить пару байт в готовой программе COM/EXE.

Для программ DOS популярны отладчики: AVPUtil, TurboDebuger(TD), SoftICE, AFD-Pro и др. В природе существуют и консольные версии, типа: виндовый 'DEBUG'. Это жалкое подобие отладчика. Он был создан очень давно, поэтому не понимает большинство новых инструкций и команд. Если-уж консольный, то можно использовать его старшего брата: отладчик GRDB. Он работает уже с 32-битными регистрами, функционал более расширен и добавлены новые команды. Дли Win-программ, лично я пользуюсь: OllyDebuger, и для реального режима - SYSER.

Все отладчики делятся на 16/32/64-битные, а так-же прикладного и ядерного уровня.
16-битный отладчик не сможет оттрассировать 32-битный код, и наоборот.
Для тестирования функций ядра ОС и драйверов, нужен отладчик уровня ядра. Например, китайский 'Syser'. Он запускается сразу при загрузке ОС. Это позволяет ему перехватывать обращения в нулевом кольце защиты, где собственно и находится святая-святых ОС. С прикладного уровня туда не добраться:

Скрин: AVPUtil
----------------
AX 0000  CX 00FF  DS:SI 2075:0100  CS:IP 2075:0100  BP 0000  ODITSZAPC |  Stack
BX 0000  DX 2075  ES:DI 2075:FFFE  SS:SP 2075:FFFE  FL 7202  001000000 |-08 0000
---------+-------------------------------------------------------------|-06 0000
2075:0100| E9 6E 02             JMP     0371                           |-04 0000
2075:0103| 0D 0A 20             OR      AX,200A                        |-02 0000
2075:0106| 49                   DEC     CX                             |->00 0000
2075:0107| 6E                   OUTSB                       ; 80186+ on|+02 20CD
2075:0108| 70 75                JO      017F                           |+04 9FFF
2075:010A| 74 20                JZ      012C                           |+06 9A00
2075:010C| 73 74                JNC     0182                           |+08 FEF0
2075:010E| 72 69                JC      0179                           |+0A F01D
2075:0110| 6E                   OUTSB                       ; 80186+ on|+0C BD6D
2075:0111| 67                   DB      67                  ; 80386+ Ad|+0E 0DEA
---------+-----------------------------------------------------+-------+--------
202F:0100| 43 4F 4D 4D  4F 4E 50 52   4F 47 52 41  4D 46 49 4C |COMMONPROGRAMFIL
202F:0110| 45 53 3D 43  3A 5C 50 52   4F 47 52 41  7E 31 5C 43 |ES=C:\PROGRA~1\C
202F:0120| 4F 4D 4D 4F  4E 7E 31 00   43 4F 4D 50  55 54 45 52 |OMMON~1*COMPUTER
202F:0130| 4E 41 4D 45  3D 53 41 4D   4C 41 42 00  44 45 56 4D |NAME=SAMLAB*DEVM

3. Ещё есть дизассемблеры. Служат для обратного ассемблирования.
Если ассемблер собирает из кода программу, то дизассемблер наоборот - из готовой COM/EXE-программы делает исходный код. Выдают много полезной информации о файле. Их очень много всяких-разных, но популярность завоевали: FreeIda (IdaPRO), HIEW, W32Dasm, Hacker's Disassembler(HDasm), и др..

Скрин: W32Dasm
---------------
Disassembly of File: AVPUTIL.COM
Code Offset = 00000000, Code Size = 000092A1
Data Offset = 00000000, Data Size = 00000000

Number of Objects = 0001 (dec), Imagebase = 00000000h

Object01:  RVA: 00000000 Offset: 00000000 Size: 000092A1 Flags: 00000000
Number of Imported Modules =    0 (decimal)

+++++++++++++++++++ EXPORTED FUNCTIONS +++++++++++++++++++
Number of Exported Functions = 0000 (decimal)

+++++++++++++++++++ ASSEMBLY CODE LISTING ++++++++++++++++
//*********** Start of Code in Object BinaryCode *********
Program Entry Point Not Available

//************* Start of Code in Segment: 1 **************

:0001.0100 BEC093                 mov si, 93C0
:0001.0103 BFCACE                 mov di, CECA
:0001.0106 B94A49                 mov cx, 494A
:0001.0109 3BFC                   cmp di, sp
:0001.010B 7204                   jb 0111
:0001.010D B44C                   mov ah, 4C
:0001.010F CD21                   int 21

4. Ну и ещё одно оружие в копилке программиста, это HEX-редакторы.
Позволяют редактировать только опкоды команд программы. Тоже должен быть всегда под рукой.
Популярны: HIEW, HT, TSE-Pro, WinHex, Hxd и куча других. Можно подправить байтики опкодов, посмотреть сигнатуру файла (в данном случае 'MZ' - DOS/exe), текстовые строки и прочее содержимое.

Скрин: Hxd
---------------
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  4D 5A 50 00 02 00 00 00 04 00 0F 00 FF FF 00 00  MZP.........яя..
00000010  B8 00 00 00 00 00 00 00 40 00 1A 00 00 00 00 00  ё.......@.......
00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00  ................
00000040  BA 10 00 0E 1F B4 09 CD 21 B8 01 4C CD 21 90 90  є....ґ.Н!ё.LН!ђђ
00000050  54 68 69 73 20 70 72 6F 67 72 61 6D 20 6D 75 73  This program mus
00000060  74 20 62 65 20 72 75 6E 20 75 6E 64 65 72 20 57  t be run under W
00000070  69 6E 33 32 0D 0A 24 37 00 00 00 00 00 00 00 00  in32..$7........


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#6 19-12-2016 12:54:32

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Спасибо за подсказки, с некоторыми я вообще незнаком,постараюсь взять на вооружение.Что такое отладка и трассировка я понимаю, но в поспешных ответах и своих суждениях не правильно отображаю,буду стараться и исправляться.
Этот сайт Тимур Ваш? Я находил ваш первый сайт,он небольшой,но там есть интересные программки,за консультацией
я обрачусь позже.

Неактивен

#7 19-12-2016 14:58:55

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905, нет.. сайт не мой. Но это один из первых ресурсов, где я регистрировался.
Даже помню свою первую тему, когда после замены беременного конденсатора, материнка перестала работать.
Свой сайт tgsa.narod.ru делал больше из интереса к HTML, куда скопировал свои эксперементы от сюда.

А в посте выше я расписал так для того, чтоб мы лучше понимали друг-друга.
Ато получится, что Вы будете говорить об одном, а буду понимать это по другому.. podmig


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#8 20-12-2016 23:32:10

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур! По поводу Вашего высказывания "виндовый 'DEBUG'. Это жалкое подобие отладчика" я согласен,но ознакомившись с Видеокурсом "Основы Assembler средствами отладчика" / Программирование на языке ассемблера [2013, RUS]...и особенно 8-ой урок Перенаправление потоков информации и последующие уроки, был получен новый стиль в работе и мне кажется имеет полезность в решении некоторых малых задач.
Не знаю как у Вас, а у меня в WINDOWS XP есть текстовый редактор EDIT и вот методом перенаправления потоков
информации через редактор можно вести отладку,очень легко и без проблем  можно делать исправления.
В cmd.exe заносишь 1) данные для трассировки edit in_*.txt , 2) debug < in_*.txt  >  out_*.txt ,3) out_*txt
Высылаю два примера для наглядности и правильно ли они решены DTBUG.Знакомы ли вы были с этой методикой и можно ли подобрать скрипты для избавления от повторяемости при запуске cmd.txt при трассировке программы?
Извините меня за нелепость и абсурдность,что нахватался разных старых идей и они сидят и бродят в голове.Чего меня заитриговало,что публикация 2013г.
1-ый пример:
in_27.txt
a 100
jmp    0178
db 13,10,'This is my first programm. Rumit(c)'
db 13,10,'-------------------------------------- $'
db 13,10,'Hello World!!! $'
db 13,10,'Press any key.....$'
mov    dx,0102
mov    ah,09
int    21
mov    dx,0151
mov    ah,09
int    21
mov    dx,0163
mov    ah,09
int    21
xor    ax,ax
int    16
int    20

r ip
178
r
t2
p
t2
p
t2
p
t


q

   Result: Display the screen
   This is my first programm. Rumit(c)
                              --------------------------------------
                              Hello World!!!
                              Press any key.....
out_27.txt
-a 100

0B28:0100 jmp    0178

0B28:0102 db 13,10,'This is my first programm. Rumit(c)'

0B28:0127 db 13,10,'-------------------------------------- $'

0B28:0151 db 13,10,'Hello World!!! $'

0B28:0163 db 13,10,'Press any key.....$'

0B28:0178  mov    dx,0102

0B28:017B  mov    ah,09

0B28:017D  int    21

0B28:017F  mov    dx,0151

0B28:0182  mov    ah,09

0B28:0184  int    21

0B28:0186  mov    dx,0163

0B28:0189  mov    ah,09

0B28:018B  int    21

0B28:018D  xor    ax,ax

0B28:018F  int    16

0B28:0191  int    20

0B28:0193 

-r ip

IP 0100
:178

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0178   NV UP EI PL NZ NA PO NC
0B28:0178 BA0201        MOV    DX,0102                           
-t2


AX=0000  BX=0000  CX=0000  DX=0102  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=017B   NV UP EI PL NZ NA PO NC
0B28:017B B409          MOV    AH,09                             

AX=0900  BX=0000  CX=0000  DX=0102  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=017D   NV UP EI PL NZ NA PO NC
0B28:017D CD21          INT    21                                 
-p

This is my first programm. Rumit(c)--------------------------------------
AX=0924  BX=0000  CX=0000  DX=0102  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=017F   NV UP EI PL NZ NA PO NC
0B28:017F BA5101        MOV    DX,0151                           
-t2


AX=0924  BX=0000  CX=0000  DX=0151  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0182   NV UP EI PL NZ NA PO NC
0B28:0182 B409          MOV    AH,09                             

AX=0924  BX=0000  CX=0000  DX=0151  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0184   NV UP EI PL NZ NA PO NC
0B28:0184 CD21          INT    21                                 
-p

Hello World!!!
AX=0924  BX=0000  CX=0000  DX=0151  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0186   NV UP EI PL NZ NA PO NC
0B28:0186 BA6301        MOV    DX,0163                           
-t2


AX=0924  BX=0000  CX=0000  DX=0163  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0189   NV UP EI PL NZ NA PO NC
0B28:0189 B409          MOV    AH,09                             

AX=0924  BX=0000  CX=0000  DX=0163  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=018B   NV UP EI PL NZ NA PO NC
0B28:018B CD21          INT    21                                 
-p

Press any key.....
AX=0924  BX=0000  CX=0000  DX=0163  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=018D   NV UP EI PL NZ NA PO NC
0B28:018D 31C0          XOR    AX,AX                             
-t


AX=0000  BX=0000  CX=0000  DX=0163  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=018F   NV UP EI PL ZR NA PE NC
0B28:018F CD16          INT    16                                 
-


-

-

-q
2-ой пример Найти частное максимального и минимального элементов массива
in_26.txt
a 000
mov    ax,1847
mov    ds,ax
xor    si,si
mov    ah,[si]
inc    si
mov    cx,000A
dec    cx
lodsb
cmp    al,ah
jle    0019
nop
nop
xchg   al,ah
loop   000A
mov    [000A],ah
mov    ah,[si]
inc    si
mov    cx,000A
dec    cx
lodsb
cmp    al,ah
jnl    002f
nop
nop
xchg   al,ah
loop   002b
mov    [000B],ah
mov    al,[000A]
cbw
div    byte ptr [000B]
mov    ah,02
mov    dl,al
add    dl,30
int    21
mov    ah,4C
mov    al,00
int    21

u 000 004e

r ip
0000
r
t2
e ds:00 06 08 0a 07 0b 1b 0c 03 05 04
e ds:0a 00 00
d ds:00 20
t4
t4
t3
t
t4
t5
t
t2
t
d ds:00 20
r ip
0013

t8
t8
t8
t4
d ds:00 20
t
t3
t
t2
t
d ds:00 20
t6
d ds:00 20
g

q

  Otvet: he screen displayed a decimal number 9
   max=01Bh or 27
   min=03h  or 03
      damp                               [000A] [000B]
   1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 1B 03
out_26.txt

Неактивен

#9 20-12-2016 23:36:36

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

out_26.txt
-a 000

0B28:0000 mov    ax,1847

0B28:0003 mov    ds,ax

0B28:0005 xor    si,si

0B28:0007 mov    ah,[si]

0B28:0009 inc    si

0B28:000A mov    cx,000A

0B28:000D dec    cx

0B28:000E lodsb

0B28:000F cmp    al,ah

0B28:0011 jle    0019

0B28:0013 nop

0B28:0014 nop

0B28:0015 xchg   al,ah

0B28:0017 loop   000A

0B28:0019 mov    [000A],ah

0B28:001D mov    ah,[si]

0B28:001F inc    si

0B28:0020 mov    cx,000A

0B28:0023 dec    cx

0B28:0024 lodsb

0B28:0025 cmp    al,ah

0B28:0027 jnl    002f

0B28:0029 nop

0B28:002A nop

0B28:002B xchg   al,ah

0B28:002D loop   002b

0B28:002F mov    [000B],ah

0B28:0033 mov    al,[000A]

0B28:0036 cbw

0B28:0037 div    byte ptr [000B]

0B28:003B mov    ah,02

0B28:003D mov    dl,al

0B28:003F add    dl,30

0B28:0042 int    21

0B28:0044 mov    ah,4C

0B28:0046 mov    al,00

0B28:0048 int    21

0B28:004A

-u 000 004e

0B28:0000 B84718        MOV    AX,1847                           
0B28:0003 8ED8          MOV    DS,AX                             
0B28:0005 31F6          XOR    SI,SI                             
0B28:0007 8A24          MOV    AH,[SI]                           
0B28:0009 46            INC    SI                                 
0B28:000A B90A00        MOV    CX,000A                           
0B28:000D 49            DEC    CX                                 
0B28:000E AC            LODSB                                      
0B28:000F 38E0          CMP    AL,AH                             
0B28:0011 7E06          JLE    0019                               
0B28:0013 90            NOP                                      
0B28:0014 90            NOP                                      
0B28:0015 86C4          XCHG    AL,AH                             
0B28:0017 E2F1          LOOP    000A                               
0B28:0019 88260A00      MOV    [000A],AH                         
0B28:001D 8A24          MOV    AH,[SI]                           
0B28:001F 46            INC    SI                                 
0B28:0020 B90A00        MOV    CX,000A                           
0B28:0023 49            DEC    CX                                 
0B28:0024 AC            LODSB                                      
0B28:0025 38E0          CMP    AL,AH                             
0B28:0027 7D06          JGE    002F                               
0B28:0029 90            NOP                                      
0B28:002A 90            NOP                                      
0B28:002B 86C4          XCHG    AL,AH                             
0B28:002D E2FC          LOOP    002B                               
0B28:002F 88260B00      MOV    [000B],AH                         
0B28:0033 A00A00        MOV    AL,[000A]                         
0B28:0036 98            CBW                                      
0B28:0037 F6360B00      DIV    BYTE PTR [000B]                   
0B28:003B B402          MOV    AH,02                             
0B28:003D 88C2          MOV    DL,AL                             
0B28:003F 80C230        ADD    DL,30                             
0B28:0042 CD21          INT    21                                 
0B28:0044 B44C          MOV    AH,4C                             
0B28:0046 B000          MOV    AL,00                             
0B28:0048 CD21          INT    21                                 
0B28:004A 0000          ADD    [BX+SI],AL                         
0B28:004C 0000          ADD    [BX+SI],AL                         
0B28:004E 0000          ADD    [BX+SI],AL                         
-

-r ip

IP 0100
:0000

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0000   NV UP EI PL NZ NA PO NC
0B28:0000 B84718        MOV    AX,1847                           
-t2


AX=1847  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0003   NV UP EI PL NZ NA PO NC
0B28:0003 8ED8          MOV    DS,AX                             

AX=1847  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0005   NV UP EI PL NZ NA PO NC
0B28:0005 31F6          XOR    SI,SI                             
-e ds:00 06 08 0a 07 0b 1b 0c 03 05 04

-e ds:0a 00 00

-d ds:00 20

1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 00 00 00 00 00 00   ................
1847:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1847:0020  00                                                .
-t4


AX=1847  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0007   NV UP EI PL ZR NA PE NC
0B28:0007 8A24          MOV    AH,[SI]                            DS:0000=06

AX=0647  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL ZR NA PE NC
0B28:0009 46            INC    SI                                 

AX=0647  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI PL NZ NA PO NC
0B28:000A B90A00        MOV    CX,000A                           

AX=0647  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ NA PO NC
0B28:000D 49            DEC    CX                                 
-t4


AX=0647  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE NC
0B28:000E AC            LODSB                                      

AX=0608  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE NC
0B28:000F 38E0          CMP    AL,AH                             

AX=0608  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI PL NZ NA PO NC
0B28:0011 7E06          JLE    0019                               

AX=0608  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0013   NV UP EI PL NZ NA PO NC
0B28:0013 90            NOP                                      
-t3


AX=0608  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0014   NV UP EI PL NZ NA PO NC
0B28:0014 90            NOP                                      

AX=0608  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI PL NZ NA PO NC
0B28:0015 86C4          XCHG    AL,AH                             

AX=0806  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0017   NV UP EI PL NZ NA PO NC
0B28:0017 E2F1          LOOP    000A                               
-t


AX=0806  BX=0000  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI PL NZ NA PO NC
0B28:000A B90A00        MOV    CX,000A                           
-t4


AX=0806  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ NA PO NC
0B28:000D 49            DEC    CX                                 

AX=0806  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE NC
0B28:000E AC            LODSB                                      

AX=080A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE NC
0B28:000F 38E0          CMP    AL,AH                             

AX=080A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI PL NZ NA PO NC
0B28:0011 7E06          JLE    0019                               
-t5


AX=080A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0013   NV UP EI PL NZ NA PO NC
0B28:0013 90            NOP                                      

AX=080A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0014   NV UP EI PL NZ NA PO NC
0B28:0014 90            NOP                                      

AX=080A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI PL NZ NA PO NC
0B28:0015 86C4          XCHG    AL,AH                             

AX=0A08  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0017   NV UP EI PL NZ NA PO NC
0B28:0017 E2F1          LOOP    000A                               

AX=0A08  BX=0000  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI PL NZ NA PO NC
0B28:000A B90A00        MOV    CX,000A                           
-t


AX=0A08  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ NA PO NC
0B28:000D 49            DEC    CX                                 
-t2


AX=0A08  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE NC
0B28:000E AC            LODSB                                      

AX=0A07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE NC
0B28:000F 38E0          CMP    AL,AH                             
-t


AX=0A07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI NG NZ AC PO CY
0B28:0011 7E06          JLE    0019                               
-d ds:00 20

1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 00 00 00 00 00 00   ................
1847:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1847:0020  00                                                .
-r ip

IP 0011
:0013

-

-t8


AX=0A07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0014   NV UP EI NG NZ AC PO CY
0B28:0014 90            NOP                                      

AX=0A07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI NG NZ AC PO CY
0B28:0015 86C4          XCHG    AL,AH                             

AX=070A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0017   NV UP EI NG NZ AC PO CY
0B28:0017 E2F1          LOOP    000A                               

AX=070A  BX=0000  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI NG NZ AC PO CY
0B28:000A B90A00        MOV    CX,000A                           

AX=070A  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI NG NZ AC PO CY
0B28:000D 49            DEC    CX                                 

AX=070A  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE CY
0B28:000E AC            LODSB                                      

AX=070B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE CY
0B28:000F 38E0          CMP    AL,AH                             

AX=070B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI PL NZ NA PO NC
0B28:0011 7E06          JLE    0019                               
-t8


AX=070B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0013   NV UP EI PL NZ NA PO NC
0B28:0013 90            NOP                                      

AX=070B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0014   NV UP EI PL NZ NA PO NC
0B28:0014 90            NOP                                      

AX=070B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI PL NZ NA PO NC
0B28:0015 86C4          XCHG    AL,AH                             

AX=0B07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0017   NV UP EI PL NZ NA PO NC
0B28:0017 E2F1          LOOP    000A                               

AX=0B07  BX=0000  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI PL NZ NA PO NC
0B28:000A B90A00        MOV    CX,000A                           

AX=0B07  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ NA PO NC
0B28:000D 49            DEC    CX                                 

AX=0B07  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE NC
0B28:000E AC            LODSB                                      

AX=0B1B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE NC
0B28:000F 38E0          CMP    AL,AH                             
-t8


AX=0B1B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI PL NZ NA PO NC
0B28:0011 7E06          JLE    0019                               

AX=0B1B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0013   NV UP EI PL NZ NA PO NC
0B28:0013 90            NOP                                      

AX=0B1B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0014   NV UP EI PL NZ NA PO NC
0B28:0014 90            NOP                                      

AX=0B1B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI PL NZ NA PO NC
0B28:0015 86C4          XCHG    AL,AH                             

AX=1B0B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0017   NV UP EI PL NZ NA PO NC
0B28:0017 E2F1          LOOP    000A                               

AX=1B0B  BX=0000  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000A   NV UP EI PL NZ NA PO NC
0B28:000A B90A00        MOV    CX,000A                           

AX=1B0B  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ NA PO NC
0B28:000D 49            DEC    CX                                 

AX=1B0B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0006  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PE NC
0B28:000E AC            LODSB                                      
-t4


AX=1B0C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0007  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PE NC
0B28:000F 38E0          CMP    AL,AH                             

AX=1B0C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0007  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI NG NZ NA PO CY
0B28:0011 7E06          JLE    0019                               

AX=1B0C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0007  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0019   NV UP EI NG NZ NA PO CY
0B28:0019 88260A00      MOV    [000A],AH                          DS:000A=00

AX=1B0C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0007  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI NG NZ NA PO CY
0B28:001D 8A24          MOV    AH,[SI]                            DS:0007=03
-d ds:00 20

1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 1B 00 00 00 00 00   ................
1847:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1847:0020  00                                                .
-t


AX=030C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0007  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI NG NZ NA PO CY
0B28:001F 46            INC    SI                                 
-t3


AX=030C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0008  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PO CY
0B28:0020 B90A00        MOV    CX,000A                           

AX=030C  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0008  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ NA PO CY
0B28:0023 49            DEC    CX                                 

AX=030C  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0008  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE CY
0B28:0024 AC            LODSB                                      
-t


AX=0305  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0025   NV UP EI PL NZ NA PE CY
0B28:0025 38E0          CMP    AL,AH                             
-t2


AX=0305  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0027   NV UP EI PL NZ NA PO NC
0B28:0027 7D06          JGE    002F                               

AX=0305  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=002F   NV UP EI PL NZ NA PO NC
0B28:002F 88260B00      MOV    [000B],AH                          DS:000B=00
-t


AX=0305  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0033   NV UP EI PL NZ NA PO NC
0B28:0033 A00A00        MOV    AL,[000A]                          DS:000A=1B
-d ds:00 20

1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 1B 03 00 00 00 00   ................
1847:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1847:0020  00                                                .
-t6


AX=031B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0036   NV UP EI PL NZ NA PO NC
0B28:0036 98            CBW                                      

AX=001B  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0037   NV UP EI PL NZ NA PO NC
0B28:0037 F6360B00      DIV    BYTE PTR [000B]                    DS:000B=03

AX=0009  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=003B   NV UP EI PL NZ NA PO NC
0B28:003B B402          MOV    AH,02                             

AX=0209  BX=0000  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=003D   NV UP EI PL NZ NA PO NC
0B28:003D 88C2          MOV    DL,AL                             

AX=0209  BX=0000  CX=0009  DX=0009  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=003F   NV UP EI PL NZ NA PO NC
0B28:003F 80C230        ADD    DL,30                             

AX=0209  BX=0000  CX=0009  DX=0039  SP=FFEE  BP=0000  SI=0009  DI=0000 
DS=1847  ES=0B28  SS=0B28  CS=0B28  IP=0042   NV UP EI PL NZ NA PE NC
0B28:0042 CD21          INT    21                                 
-d ds:00 20

1847:0000  06 08 0A 07 0B 1B 0C 03-05 04 1B 03 00 00 00 00   ................
1847:0010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1847:0020  00                                                .
-g

9

Неактивен

#10 27-12-2016 09:56:46

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905, вполне достойная методика, только стара как мир..
Редактор "EDIT" уходит корнями в ещё в MS-DOS, поэтому к минусам можно отнести отсутствие кирилицы (кодировки Win-1251), и всего, что с связано с современными фишками. Если Вы пишете программы не из-под чистого доса, то его вполне можно заменить на любой/современный TXT-редактор, типа "AkelPad". Последнии/его версии имеют даже подсветку ASM-синтаксиса, кучу кодировок (включая кодировку DOS-866, для кирилицы), и прочии вкусности..

А по теме - хотелось-бы узнать, что у Вас было в файле "in_*.txt"?
Какое содержимое файла Вы передавали параметром в 'EDIT.COM'?
Я пытался отправить в эдит готовый к компиляции ASM-файл, но 'EDIT' мне просто открыл его для просмотра/редактирования. Далее, отправил этот-же ASM-файл перенаправлением в DEBUG, но получил в файле "out_*.txt" кучу ошибок такого характера:

Код:

-
-org  100h
  ^ ошибка
-jmp  start
 ^ ошибка
-
-;---- DATA ----
 ^ ошибка
-mes0    db  13,10,'Read MBR....: $'
    ^ ошибка
-mes1    db  'OK!'
    ^ ошибка
-        db  13,10,'Part count..: $'
        ^ ошибка
-mes2    db  13,10,'Partition(1): $'
    ^ ошибка
-err     db  'Error!$'
  ^ ошибка

Объясните суть Ваших манипуляций..
Или это просто для отчёта проделанных действий при отладке?

Скрипты для 'CMD.EXE' можно организовать через пакетные, ..или т.н. BAT-файлы.
Почитать про рабуту с ними можно в моей теме здесь.
К бат-файлам в этой теме относится всё, что начинается с @echo off

PS//. С наступающим Вас Новым годом!


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#11 27-12-2016 23:57:36

Тимур Салахутдинов
Гость

Re: Вопросы по теме "Исходники на ассемблере"

Тимур! Получил от тебя сообщение и развеялись сомнения,я уже думал,что за эту навязчивую идею ты рассердился и не захотел дальше общаться.На несколько дней отключился сайт,тоже подумал,что за большую обширную информацию и заполненную не по стандарту, меня видно заблокировали выходить на этот сайт.
Ну а сейчас по сути твоего вопроса.Суть вопроса ты уловил правильно.Ошибка заключается в том,что здесь,  как и в DEBUG заносятся только чистые машинные команды,по этой причине "out_*.txt" и показал ошибки.В место "*.txt" звёздочки я ставлю название программы обычно любое, цифровое число,можно буквенное название.
Пример машинной команды,которая заносится к примеру in_2.txt   db 13,10,'This is my first programm. Rumit(c)'
Командная строка
C:\>edit in_27.txt

C:\>debug < in_27.txt > out_27.txt

C:\>edit out_27.txt

C:\>edit in_27.txt

C:\>debug < in_27.txt > out_27.txt

C:\>edit out_27.txt

C:\>edit in_27.txt

C:\>
C:\>edit in_27.txt в командной строке нажимаем enter смотрим в редакторе Edit
a 100
jmp    0178
db 13,10,'This is my first programm. Rumit(c)'
db 13,10,'-------------------------------------- $'
db 13,10,'Hello World!!! $'
db 13,10,'Press any key.....$'
mov    dx,0102
mov    ah,09
int    21
mov    dx,0151
mov    ah,09
int    21
mov    dx,0163
mov    ah,09
int    21
xor    ax,ax
int    16
int    20

r ip
178
Запускаем вторую строку отладчика C:\>debug < in_27.txt > out_27.txt редактор не смотрим
Запускаем третью строку C:\>edit out_27.txt дизассемблирования и трассировки,Enter смотрим открывающийся редактор Edit.
-a 100♪
0B28:0100 jmp    0178 ♪
0B28:0102 db 13,10,'This is my first programm. Rumit(c)'♪
0B28:0127 db 13,10,'-------------------------------------- $'♪
0B28:0151 db 13,10,'Hello World!!! $'♪
0B28:0163 db 13,10,'Press any key.....$'♪
0B28:0178  mov    dx,0102♪
0B28:017B  mov    ah,09♪
0B28:017D  int    21♪
0B28:017F  mov    dx,0151♪
0B28:0182  mov    ah,09♪
0B28:0184  int    21♪
0B28:0186  mov    dx,0163♪
0B28:0189  mov    ah,09♪
0B28:018B  int    21♪
0B28:018D  xor    ax,ax♪
0B28:018F  int    16♪
0B28:0191  int    20♪
0B28:0193  ♪
-r ip♪
IP 0100
:178♪
Если надо делать поправки и исправления опять переходим в edit in_27.txt открываем,делаем поправки,ставим количество t трассировки, в конце программы обязательно q, иначе при запуске DEBUG будет происходить зависание.При заполнении и исправлении edit in_27.txt ОБЯЗАТЕЛЬНО команда файл нажать СОХРАНИТЬ и ВЫЙТИ,выполнить 2-ю строку нажав Enter, после просмотра Edit  out_27.txt только ВЫЙТИ и так быстро и оперативно,в такой последовательности чередования столько раз сколько для этого необходимо.Три строчки заполнения это аксиома  и стандарт.Машинные команды я брал с отладчика tasm команда
td.exe 27.com отладчик полностью раскрывает все машинные команды,но можно и самому составлять,как вы это делали на этом сайте.Кроме как на редакторе EDIT,на других не получается,по видимому автор привязал только к ему,так как в 2013г. было уже много лучших,но выбрал он этот.Может быть можно было  использовать FAR,но я с ним знаком поверхностно.
Видеокурс "Основы Assembler средствами отладчика" / Программирование на языке ассемблера [2013, RUS]
Адрес для скачивания через torrent: http://rutracker.org/forum/viewtopic.php?t=4727024.Программы там автором
расматрываются в 22 уроках,после 8-ого сложные,но единственно что мне не нравится,что он их излагает медленно и письменно.Если бы ты сам посмотрел хотя бы 8-9-ые уроки,была бы полная ясность о возможности полезности этой методики.
Разреши тебя тоже поздравить с наступающим Новым годом.Крепкого,хорошего здоровья тебе и твоей семье,чтобы оно сопутствовало всегда по жизни.Больших и творческих успехов в работе и особенно в программировании и больше всего Ассемблере,чтобы на всех участвующих форумах имел лучшие результаты и был лидером.Твои мечты по достижению знаний и познанию более углубленно определенных разделов ассемблера осуществлялись всегда в жизни.Счастья,любви и хорошего Новогоднего настроения.

#12 28-12-2016 10:44:05

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур! Извини за пересылку сообщений.Тема уже была закрыта и я никак не мог отослать ответ.Я послал по электронной почте.Но там почему то вместо адреса выдает твой фамильный Логин и я в сомнении пойдет ли это
письмо продублировал ещё на сайте и опять оказался логин и как бы твоя адресация,как гость.Извини ещё раз.

Неактивен

#13 28-12-2016 20:30:13

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905, можете не беспокоиться. Никто Вас здесь не забанит, и доступ не закроет.
Модераторы тут не такие "зверюги", как на некоторых (не будем указывать пальцем) сайтах.
Вашему желанию вникнуть в ассемблер можно только позавидовать.

К сожалению, по Вашей ссылке лежит видео/файл большого размера: свыше 1 Gb.
У меня трафик не позволяет его сейчас скачать, но как-нибудь посмотрю. Теперь я Вашу мысль уловил. Правда сам такую технику никогда не применял, но она есть и почему-бы её не использовать. Всё что не убивает, делает нас сильнее! (хотя кастрированный кот может быть с этим не согласен). Шутка..

А по теме: чтобы постоянно не вбивать в ком.стоке одни и теже команды, можно (как я уже говорил) использовать бат-файл с таким содержимым. Скопируйте его в блокнот и сохраните как *.BAT:

Код:

@echo off
rem  ----------------------------------------
rem  Ненужные строчки можно закомментировать
rem  REM   - означает комментарий
rem  PAUSE - ждёт нажатия любой клавиши...
rem  ECHO  - выводит текстовую строку
rem  ECHO. - вставляет пустую строку
rem  ----------------------------------------

edit  in_27.txt
pause
debug < in_27.txt > out_27.txt
echo.
echo  Create file [out_27.txt] - OK!
pause
edit  out_27.txt
pause
edit  in_27.txt
pause
debug < in_27.txt > out_27.txt
echo.
echo  Create file [out_27.txt] - OK!
pause
edit  out_27.txt
pause
edit  in_27.txt
pause

Батник должен находится в одной директории с файлом: in_27.txt
Здоровья Вам в теле, любви в постели, баксов в портфеле, и никакой канители!!!
Если возникнут вопросы - рад буду ответить!


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#14 13-01-2017 01:17:30

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур! Добрый вечер.Отошел от дел программирования,за эти Новогодние праздники,заодно в семейном кругу отметил своё 70-летие, так что пришлось немного расслабится.Внуки на каникулах любители поиграть в игры,так что доступ позаниматься со всех сторон был ограничен.Ну а сейчас перехожу к делу.
Спасибо за методику  бат-файла,но три строчки набирать для меня быстрее и я уже приловчился,чем через батник,
пойдет для других целей и если можно поясни как ты запускаешь и куда вставляешь подробнее,я раньше не занимался,а просматривая по другим источникам,такой методики не нашел.@echo off это основа батника,а с rem не  нашел.
Видео/файл уроков у меня есть скаченный, файлы составляют примерно по 60 MB,могу переслать по электронной почте,если это надо и приемлимо тебе.
Высылаю тебе адрес онлайновского  Универсальный декодер - конвертер кириллицы https://2cyr.com/decode/?lang=ru  Можно работать в cmd.exe c русским переводом через кодировку windows 1251.
Я предложил тебе называть меня Николаем,но ты пишешь в названии псевдоним K-1905,я ошибку понял,тебе неудобно обращаться так из-за возроста,зовут меня Николай Александрович,можешь кратко называть Александрович.
Хотел попросить Тебя, по возможности,разобраться с этой программой.Комментарий здесь по выполнению команд слабенький, но понятный, с большой строки необходимо удалить abcde.Я сделал трассировку всех команд,это составило больше 1000 команд,программа закрылась вроде все правильно,но результата я нигде не получил ни на экране, ни в дампе.И как можно и правильно решить её проще?
dseg segment

Код:

    strSrc  db 'dsfa dfeagbedfc 9489dgj fk[q2tb hello world push',00h 
    uLen1   dw $-strSrc-1 
    strSub  db 'abcde',00h 
    uLen2   dw $-strSub-1 
    uCount  dw 0 
dseg ends 
cseg segment 
    assume cs:cseg, ds:dseg 
start: 
    mov ax, dseg 
    mov ds, ax 
    mov es, ax 
    xor bx, bx 
    xor ax, ax 
    ;================ 
    ;===first step=== 
@main_loop: 
    mov uCount, 0 
    lea si, strSrc 
    cmp byte ptr si[bx-1], 00h 
    jz @main_loop_end 
    call find_word 
    push bx 
    push ax 
    ;===second step=== 
    mov cx, ax 
    inc cx 
    mov di, si 
    add di, bx 
    xor si, si 
    lea bx, strSub 
@main_find_sym: 
    push cx 
    push di 
    mov al, bx[si] 
    repnz scasb 
    jcxz @main_no_del 
    inc uCount 
    inc si 
    cmp si, uLen2 
    jnz @main_second_loop 
    ;===third step==== 
    cmp si, uCount 
    jnz @main_no_del 
    ;===should be delete 
    pop di 
    pop cx 
    ; call del_str 
    jmp short @main_del 
@main_second_loop: 
    pop di 
    pop cx 
    jmp short @main_find_sym 
@main_no_del: 
    pop  di 
    pop  cx 
@main_del: 
    pop  ax 
    inc  ax 
    pop  bx 
    add  bx, ax 
    jmp short @main_loop 
@main_loop_end: 
    mov ax, 4c00h 
    int 21h 
; Find word in string 
; IN:  ds:si 
;     offset to ASCIIZ string 
;      bx 
;     offset from the begining in string 
; OUT: ax 
;     length of word 
find_word proc near 
    push bx dx 
    mov  ax, bx 
@find_word_loop: 
    mov  dl, si[bx]  
    inc  bx 
    test dl, dl 
    jz @find_word_end 
    cmp  dl, ' ' 
    jnz  @find_word_loop 
@find_word_end: 
    sub  bx, ax 
    mov  ax, bx 
    dec  ax 
    pop  dx bx  
    retn 
find_word endp 
cseg ends 
end start

Неактивен

#15 14-01-2017 20:23:10

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

Николай приветствую Вас!
Мои поздравления с Юбилеем! Круто! Здоровья Вам ещё на долгие годы!

Как правило, в ассемблере применяют 2 вида строк: ASCII и ASCIIZ.
Отличаются они 'маркером конца строки'. Именно на эти маркеры опираются функции вывода строк.

Если строка заканчивается нулём (как у Вас), её называют ASCIIZ-строкой, где последняя(Z) означает 'ZERO'. Этот тип строк частенько применяется при программировании в защищённом режиме (Windows), где строки выводят API-функции.

Соответственно второй тип - это просто ASCII-строка, где маркером конца служит символ доллара($).
Такой тип характерен для реального режима MS-DOS. Функция DOS (AH=9) которая выводит строку на экран требует, чтобы строка заканчивалась маркером конца: доллар($).

От сюда следует, что для удаления (например последних 5-ти) символов из строки, достаточно просто переместить маркер конца на 5 позиций влево. У Вас-же задача чуть иная, хотя принцип остаётся тот-же. Только нужно уточнить задание. Требуется удалить символы под/строки именно в таком порядке, или-же просто удалить из строки все встречающиеся символы под/строки? (в Вашем случае под/строкой является последовательность 'abcde').

Будем считать, что нужно удалить из строки все/встречающиеся символы 'abcde' в произвольном порядке. Тогда самым простым решением будет поиск символа в строке, и если таковой имеется, то пропустив его продолжать поиск дальше. Если символ не совпал, то перезаписываем его на своё место. По окончании строки - вставляем маркер конца($). На практике реализуется это просто..

Вот пример окна с результатом, что у меня получилось:

STRING...: dsfa dfeagbedfc 9489dgj fk[q2tb hello world push
SUBSTRING: abcde
------------------
RESULT...: sf fgf 9489gj fk[q2t hllo worl push


А это исходник данного примера на FASM'е:

Код:

org  100h
jmp  start

;---- DATA ----
mes0    db  13,10,'STRING...: '
strSrc  db  'dsfa dfeagbedfc 9489dgj fk[q2tb hello world push','$'
uLen1   dw  ($-strSrc)-1

mes1    db  13,10,'SUBSTRING: '
strSub  db  'abcde','$'

mes2    db  13,10,'------------------'
        db  13,10,'RESULT...: $'

;---- CODE ----
start:   mov   ah,9            ; покажем строку
         mov   dx,mes0
         int   21h
         mov   dx,mes1         ;  ..и под/строку
         int   21h

         mov   bx,strSub       ; BX = адрес под/строки
@begin:  mov   si,strSrc       ; SI = адрес строки (для чтения)
         mov   di,si           ; DI = тот-же адрес (для перезаписи)
         mov   cx,[uLen1]      ; СХ = длина строки
         mov   ah,byte[bx]     ; AH = очередной байт из под/строки
         cmp   ah,'$'          ; это маркер конца?
         je    @stop           ; да - закончить поиск!!!

@find:   lodsb                 ; AL = очередной байт из строки
         cmp   al,ah           ; ищем байт из под/строки в строке
         je    @next           ; пропустить, если совпали..
         stosb                 ; записываем символ на место.
@next:   loop  @find           ; повторить СХ-раз.. (проверить всю строку)

         mov   al,'$'          ; AL - маркер конца строки
         stosb                 ; Вставить его в хвост строки!
         inc   bx              ; сл.символ в подстроке..
         jmp   @begin          ; Продолжить поиск!!!

@stop:   mov   ah,9            ; вывод на экран результата,
         mov   dx,mes2
         int   21h
         mov   dx,strSrc       ; ..и получившейся строки!
         int   21h

@exit:   xor   ax,ax           ; ждём клавишу..
         int   16h
         int   20h             ; на выход!

Для работы со-строками есть специальные команды, которые называются 'цепочечные', или иначе - строковые. Их всего 5, и удобны они тем, что автоматически сдвигают указатели источника/приёмника (соответственно DS:SI и ES:DI) и уменьшают счётчик длинны цепочки байт (как-правило СХ):

LODSB - читает байт в AL, из DS:SI;
STOSB - пишет байт из AL, в ES:DI;
CMPSB - сравнивает байт из AL, с байтом ES:DI;
SCASB - ищет байт из AL, в строке ES:DI;
MOVSB - копирует цепочку байт из DS:SI, в ES:DI.

Подробнее можно почитать о цепочечных командах в последнем посте здесь: http://whatis.ru/forum/viewtopic.php?id=13865&p=3


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#16 18-01-2017 17:12:09

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур! Добрый день.Просмотрел твоё решение,оно четко,просто и понятно раскрывает порядок решение задачи,а первый вариант как то замысловато.Но отладчик выдаёт ошибки.Я начало и конец поправил,ошибок меньше выдает отладчик TASM,а именно,что типы операндов не совпадают и мои поправки успеха не принесли.Вышли мне
пожалуйста твой отладчик FASM (адрес откуда скачать) и сделай небольшую корректировку,устранив ошибки.С уважением к тебе Николай
C:\TASM\BIN>tasm.exe 2.asm
Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland Inter

Код:

Assembling file:   2.asm
**Error** 2.asm(5) Code or data emission to undeclared segment
**Error** 2.asm(6) Code or data emission to undeclared segment
**Error** 2.asm(9) Code or data emission to undeclared segment
**Error** 2.asm(10) Code or data emission to undeclared segment
**Error** 2.asm(12) Code or data emission to undeclared segment
**Error** 2.asm(13) Code or data emission to undeclared segment
**Error** 2.asm(16) Code or data emission to undeclared segment
**Error** 2.asm(18) Code or data emission to undeclared segment
**Error** 2.asm(20) Code or data emission to undeclared segment
**Error** 2.asm(24) Code or data emission to undeclared segment
**Error** 2.asm(26) Code or data emission to undeclared segment
**Error** 2.asm(27) Code or data emission to undeclared segment
**Error** 2.asm(30) Code or data emission to undeclared segment
**Error** 2.asm(31) Code or data emission to undeclared segment
**Error** 2.asm(33) Code or data emission to undeclared segment
**Error** 2.asm(36) Code or data emission to undeclared segment
**Error** 2.asm(37) Code or data emission to undeclared segment
**Error** 2.asm(38) Code or data emission to undeclared segment
**Error** 2.asm(41) Code or data emission to undeclared segment
**Error** 2.asm(43) Code or data emission to undeclared segment
**Error** 2.asm(45) Code or data emission to undeclared segment
**Error** 2.asm(47) Code or data emission to undeclared segment
**Error** 2.asm(48) Code or data emission to undeclared segment
**Error** 2.asm(49) Code or data emission to undeclared segment
**Fatal** 2.asm(50) Unexpected end of file encountered
Error messages:    25
Warning messages:  None
Passes:            1
Remaining memory:  452k


dseg segment
;---- DATA ----
mes0    db  13,10,'STRING...: '
strSrc    db  'dsfa dfeagbedfc 9489dgj fk[q2tb hello world push','$'
uLen1    dw  ($-strSrc)-1

mes1    db  13,10,'SUBSTRING: '
strSub    db  'abcde','$'

mes2    db  13,10,'------------------'
    db  13,10,'RESULT...: $'
dseg ends
cseg segment 
    assume cs:cseg, ds:dseg        
;---- CODE ----
start:     mov   ah,9           ; покажем строку
     mov   dx,mes0
     int   21h
     mov   dx,mes1           ;  ..и под/строку
     int   21h

     mov   bx,strSub       ; BX = адрес под/строки
@begin:  mov   si,strSrc       ; SI = адрес строки (для чтения)
     mov   di,si           ; DI = тот-же адрес (для перезаписи)
     mov   cx,[uLen1]      ; СХ = длина строки
     mov   ah,byte[bx]     ; AH = очередной байт из под/строки
     cmp   ah,'$'           ; это маркер конца?
     je    @stop           ; да - закончить поиск!!!
find_word proc near
@find:     lodsb               ; AL = очередной байт из строки
     cmp   al,ah           ; ищем байт из под/строки в строке
     je    @next           ; пропустить, если совпали..
     stosb               ; записываем символ на место.
@next:     loop  @find           ; повторить СХ-раз.. (проверить всю строку)

     mov   al,'$'           ; AL - маркер конца строки
     stosb               ; Вставить его в хвост строки!
     inc   bx           ; сл.символ в подстроке..
     jmp   @begin           ; Продолжить поиск!!!

@stop:     mov   ah,9           ; вывод на экран результата,
     mov   dx,mes2
     int   21h
     mov   dx,strSrc       ; ..и получившейся строки!
     int   21h

@exit:     xor   ax,ax           ; ждём клавишу..
     int   16h
     int   20h           ; на выход!
   find_word endp 
       cseg ends 
       end start

C:\TASM\BIN>tasm.exe 2.asm
Turbo Assembler  Version 4.1  Copyright (c) 1988, 1996 Borland International

Assembling file:   2.asm
**Error** 2.asm(17) Operand types do not match
**Error** 2.asm(19) Operand types do not match
**Error** 2.asm(22) Operand types do not match
**Error** 2.asm(23) Operand types do not match
**Error** 2.asm(42) Operand types do not match
**Error** 2.asm(44) Operand types do not match
Error messages:    6
Warning messages:  None
Passes:            1
Remaining memory:  452k


C:\TASM\BIN>

Неактивен

#17 18-01-2017 21:34:43

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

Николай, добрый вечер!
У меня код фасмовский. Вот подправил под тасм. Отличия - незначительные. Где адрес, там нужно указывать LEA, где значения - WORD PTR. У меня нету тасма, но вроде должно работать.:

Код:

; .model TINY       ; DOS  *.com
; .model SMALL      ; DOS  *.exe
; .model FLAT       ; WIN  *.exe

; Типичный скелет DOS-файла с укороченными директивами:
;------------------------------------------------------
.386                            ;программа для ЦП не ниже 386+
.model    tiny                  ;делаем DOS-COM
.stack    100h                  ;отводим 100h байт для стека
.data                           ;начало секции данных

mes0    db  13,10,'STRING...: '
strSrc  db  'dsfa dfeagbedfc 9489dgj fk[q2tb hello world push','$'
uLen1   dw  ($-strSrc)-1

mes1    db  13,10,'SUBSTRING: '
strSub  db  'abcde','$'

mes2    db  13,10,'------------------'
        db  13,10,'RESULT...: $'

.code                                    ;секция кода
start:
         mov   ax,@data
         mov   ds,ax                 ;DS указывает на сегмент данных
start:   mov   ah,9            ; покажем строку
         lea   dx,mes0
         int   21h
         lea   dx,mes1         ;  ..и под/строку
         int   21h

         lea   bx,strSub             ; BX = адрес под/строки
@begin:  lea   si,strSrc             ; SI = адрес строки (для чтения)
         mov   di,si                 ; DI = тот-же адрес (для перезаписи)
         mov   cx,word ptr [uLen1]   ; СХ = длина строки
         mov   ah,byte ptr [bx]      ; AH = очередной байт из под/строки
         cmp   ah,'$'          ; это маркер конца?
         je    @stop           ; да - закончить поиск!!!

@find:   lodsb                 ; AL = очередной байт из строки
         cmp   al,ah           ; ищем байт из под/строки в строке
         je    @next           ; пропустить, если совпали..
         stosb                 ; записываем символ на место.
@next:   loop  @find           ; повторить СХ-раз.. (проверить всю строку)

         mov   al,'$'          ; AL - маркер конца строки
         stosb                 ; Вставить его в хвост строки!
         inc   bx              ; сл.символ в подстроке..
         jmp   @begin          ; Продолжить поиск!!!

@stop:   mov   ah,9            ; вывод на экран результата,
         lea   dx,mes2
         int   21h
         lea   dx,strSrc       ; ..и получившейся строки!
         int   21h

@exit:   xor   ax,ax           ; ждём клавишу..
         int   16h
         int   20h             ; на выход!

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#18 25-01-2017 16:33:46

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур,добрый день! Спасибо за помощь.По возможности и времени посмотри две решенные задачи в варианте DEBUG
Арифметическая думаю что,решена правильно,а за вторую сомневаюсь.Не совсем хорошо понял суть её. Редактировал через Notepad++,кодировку ставил Кириллица WINDOWS-1251 и Edit показывает русскими буквами.
Я как то ,просил Тебя адрес,где скачать отладчик FASM, каким ты пользуешься,но ты почему то не ответил?
    1.Арифметическая задача.

Код:

.model    small 
.stack    100h 
DIGITS_AFTER_POINT = 5 
.data 
    buf    db    5 dup (0) 
    result    db    20 dup (0) 
    digits    db    '.',DIGITS_AFTER_POINT dup (0) 
.code 
Decimals    proc    near 
;перевод остатка от деления в дробную часть 
;на входе: 
;    ax - остаток 
;    bx - делитель 
; 
    push    di 
    push    si 
;обнуление выходного массива символов 
    lea    di,digits 
    inc    di 
    push    ax 
    mov    al,'0' 
    mov    cx,DIGITS_AFTER_POINT 
    rep    stosb 
    pop    ax 
;вычисление дробной части 
    lea    di,digits 
    inc    di 
    mov    si,10 
    mov    cx,DIGITS_AFTER_POINT 
@@1_1: 
    mul    si 
    div    bx 
    add    al,'0' 
    stosb 
    mov    ax,dx 
    or    ax,ax 
    loopnz    @@1_1 
    pop    si 
    pop    di 
    ret     
Decimals    endp 
; 
Divide    proc    near 
;знаковое деление с занесением результата в строку 
;на входе: 
;    ax - делимое 
;    bx - делитель 
; 
    push    di 
    push    si 
    lea    di,result 
    cld 
    cwd 
    idiv    bx 
    test    ax,8000h 
    jz    @@2_1 
;Результат отрицательный - записываем '-' в строку и переводим его в положительный 
    push    ax 
    mov    al,'-' 
    stosb 
    pop    ax 
    neg    ax 
    neg    dx 
@@2_1: 
    push    dx 
    push    bx 
; 
    push    di 
;Перевод целой части результата в строку 
    lea    di,buf 
    xor    cx,cx 
    mov    bx,10 
@@2_2: 
    xor    dx,dx 
    div    bx 
    push    ax 
    mov    ax,dx 
    add    al,'0' 
    stosb 
    inc    cx 
    pop    ax 
    or    ax,ax 
    jnz    @@2_2 
    mov    si,di 
    dec    si 
    pop    di 
@@2_3: 
    mov    al,[si] 
    dec    si 
    stosb 
    loop    @@2_3 
; 
    pop    bx 
    pop    ax 
;получение дробной части результата 
    call    Decimals 
;дописывание дробной части в результирующую строку 
    lea    si,digits 
    mov    cx,DIGITS_AFTER_POINT+1 
    rep    movsb 
    mov    al,0Dh 
    stosb 
    mov    al,0Ah 
    stosb 
    mov    al,'$' 
    stosb 
; 
    pop    si 
    pop    di 
    retn 
Divide    endp 
START: 
    mov    ax,@data 
    mov    ds,ax 
    mov    es,ax 
    mov    ax,-12345    ;делимое 
    mov    bx,33    ;делитель 
    call    Divide 
    lea    dx,result 
    mov    ah,9 
    int    21h 
    mov    ax,4C00h 
    int    21h 
end    START

Код:

a  000
;Decimals    proc    near
;ЇҐаҐў®¤ ®бв вЄ  ®в ¤Ґ«Ґ­Ёп ў ¤а®Ў­го з бвм
push   di
push   si
mov    di,0019
inc    di
push   ax
mov    al,30
mov    cx,0005
rep stosb
pop    ax
mov    di,0019
inc    di
mov    si,000A
mov    cx,0005
mul    si
div    bx
add    al,30
stosb
mov    ax,dx
or     ax,ax
loopnz 0019
pop    si
pop    di
ret
;Divide    proc    near
;§­ Є®ў®Ґ ¤Ґ«Ґ­ЁҐ б § ­ҐбҐ­ЁҐ¬ १г«мв в  ў бва®Єг 
push   di
push   si
mov    di,0005
cld
cwd
idiv   bx
test   ax,8000
je     0040
push   ax
mov    al,2D
stosb
;ђҐ§г«мв в ®ваЁж вҐ«м­л© - § ЇЁблў Ґ¬ '-' ў бва®Єг Ё ЇҐаҐў®¤Ё¬ ҐЈ® ў Ї®«®¦ЁвҐ«м­л©
pop    ax
neg    ax
neg    dx
push   dx
push   bx
push   di
mov    di,0000
xor    cx,cx
mov    bx,000A
xor    dx,dx
div    bx
push   ax
mov    ax,dx
add    al,30
stosb
inc    cx
pop    ax
or     ax,ax
jne    004B
mov    si,di
dec    si
pop    di
mov    al,[si]
dec    si
stosb
loop   005F
pop    bx
pop    ax
call   0000
;¤®ЇЁблў ­ЁҐ ¤а®Ў­®© з бвЁ ў १г«мвЁагойго бва®Єг
mov    si,0019
mov    cx,0006
rep movsb
mov    al,0D
stosb
mov    al,0A
stosb
mov    al,24
stosb
pop    si
pop    di
ret
;Ћб­®ў­ п Їа®жҐ¤га 
;START:(­ з «®)
mov    ax,0B41
mov    ds,ax
mov    es,ax
mov    ax,CFC7
mov    bx,0021
call   0029
mov    dx,0005
mov    ah,09
int    21
mov    ax,4C00
int    21

u 000 09A

r ip
007e

r
t2
e ds:000 00 00 00 00 00
e ds:005 00 00 00 00 00 00 00 00 00 00 00
e ds:010 00 00 00 00 00 00 00 00 00
e ds:020 db    '.'
d ds:000 100
t3
t8
d ds:000 040
t16
d ds:000 040
t10
t4
d ds:000 040
t
t6
t4
t4
t3
d ds:000 040
t19
d ds:000 040
t7
t
t5
t
t5
t
t
t5
t4
d ds:000 040
p
t10
d ds:000 040
t3
d ds:000 040
p
t


q

            ђҐ§г«мв в: -374.09090

Код:

-a  000

0B28:0000 ;Decimals    proc    near

0B28:0000 ;ЇҐаҐў®¤ ®бв вЄ  ®в ¤Ґ«Ґ­Ёп ў ¤а®Ў­го з бвм

0B28:0000 push   di

0B28:0001 push   si

0B28:0002 mov    di,0019

0B28:0005 inc    di

0B28:0006 push   ax

0B28:0007 mov    al,30

0B28:0009 mov    cx,0005

0B28:000C rep stosb

0B28:000E pop    ax

0B28:000F mov    di,0019

0B28:0012 inc    di

0B28:0013 mov    si,000A

0B28:0016 mov    cx,0005

0B28:0019 mul    si

0B28:001B div    bx

0B28:001D add    al,30

0B28:001F stosb

0B28:0020 mov    ax,dx

0B28:0022 or     ax,ax

0B28:0024 loopnz 0019

0B28:0026 pop    si

0B28:0027 pop    di

0B28:0028 ret

0B28:0029 ;Divide    proc    near

0B28:0029 ;§­ Є®ў®Ґ ¤Ґ«Ґ­ЁҐ б § ­ҐбҐ­ЁҐ¬ १г«мв в  ў бва®Єг 

0B28:0029 push   di

0B28:002A push   si

0B28:002B mov    di,0005

0B28:002E cld

0B28:002F cwd

0B28:0030 idiv   bx

0B28:0032 test   ax,8000

0B28:0035 je     0040

0B28:0037 push   ax

0B28:0038 mov    al,2D

0B28:003A stosb

0B28:003B ;ђҐ§г«мв в ®ваЁж вҐ«м­л© - § ЇЁблў Ґ¬ '-' ў бва®Єг Ё ЇҐаҐў®¤Ё¬ ҐЈ® ў Ї®«®¦ЁвҐ«м

0B28:003B pop    ax

0B28:003C neg    ax

0B28:003E neg    dx

0B28:0040 push   dx

0B28:0041 push   bx

0B28:0042 push   di

0B28:0043 mov    di,0000

0B28:0046 xor    cx,cx

0B28:0048 mov    bx,000A

0B28:004B xor    dx,dx

0B28:004D div    bx

0B28:004F push   ax

0B28:0050 mov    ax,dx

0B28:0052 add    al,30

0B28:0054 stosb

0B28:0055 inc    cx

0B28:0056 pop    ax

0B28:0057 or     ax,ax

0B28:0059 jne    004B

0B28:005B mov    si,di

0B28:005D dec    si

0B28:005E pop    di

0B28:005F mov    al,[si]

0B28:0061 dec    si

0B28:0062 stosb

0B28:0063 loop   005F

0B28:0065 pop    bx

0B28:0066 pop    ax

0B28:0067 call   0000

0B28:006A ;¤®ЇЁблў ­ЁҐ ¤а®Ў­®© з бвЁ ў १г«мвЁагойго бва®Єг

0B28:006A mov    si,0019

0B28:006D mov    cx,0006

0B28:0070 rep movsb

0B28:0072 mov    al,0D

0B28:0074 stosb

0B28:0075 mov    al,0A

0B28:0077 stosb

0B28:0078 mov    al,24

0B28:007A stosb

0B28:007B pop    si

0B28:007C pop    di

0B28:007D ret

0B28:007E ;Ћб­®ў­ п Їа®жҐ¤га 

0B28:007E ;START:(­ з «®)

0B28:007E mov    ax,0B41

0B28:0081 mov    ds,ax

0B28:0083 mov    es,ax

0B28:0085 mov    ax,CFC7

0B28:0088 mov    bx,0021

0B28:008B call   0029

0B28:008E mov    dx,0005

0B28:0091 mov    ah,09

0B28:0093 int    21

0B28:0095 mov    ax,4C00

0B28:0098 int    21

0B28:009A 

-u 000 09A

0B28:0000 57            PUSH    DI                                 
0B28:0001 56            PUSH    SI                                 
0B28:0002 BF1900        MOV    DI,0019                            
0B28:0005 47            INC    DI                                 
0B28:0006 50            PUSH    AX                                 
0B28:0007 B030          MOV    AL,30                              
0B28:0009 B90500        MOV    CX,0005                            
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       
0B28:000E 58            POP    AX                                 
0B28:000F BF1900        MOV    DI,0019                            
0B28:0012 47            INC    DI                                 
0B28:0013 BE0A00        MOV    SI,000A                            
0B28:0016 B90500        MOV    CX,0005                            
0B28:0019 F7E6          MUL    SI                                 
0B28:001B F7F3          DIV    BX                                 
0B28:001D 0430          ADD    AL,30                              
0B28:001F AA            STOSB                                       
0B28:0020 89D0          MOV    AX,DX                              
0B28:0022 09C0          OR    AX,AX                              
0B28:0024 E0F3          LOOPNZ    0019                               
0B28:0026 5E            POP    SI                                 
0B28:0027 5F            POP    DI                                 
0B28:0028 C3            RET                                       
0B28:0029 57            PUSH    DI                                 
0B28:002A 56            PUSH    SI                                 
0B28:002B BF0500        MOV    DI,0005                            
0B28:002E FC            CLD                                       
0B28:002F 99            CWD                                       
0B28:0030 F7FB          IDIV    BX                                 
0B28:0032 A90080        TEST    AX,8000                            
0B28:0035 7409          JZ    0040                               
0B28:0037 50            PUSH    AX                                 
0B28:0038 B02D          MOV    AL,2D                              
0B28:003A AA            STOSB                                       
0B28:003B 58            POP    AX                                 
0B28:003C F7D8          NEG    AX                                 
0B28:003E F7DA          NEG    DX                                 
0B28:0040 52            PUSH    DX                                 
0B28:0041 53            PUSH    BX                                 
0B28:0042 57            PUSH    DI                                 
0B28:0043 BF0000        MOV    DI,0000                            
0B28:0046 31C9          XOR    CX,CX                              
0B28:0048 BB0A00        MOV    BX,000A                            
0B28:004B 31D2          XOR    DX,DX                              
0B28:004D F7F3          DIV    BX                                 
0B28:004F 50            PUSH    AX                                 
0B28:0050 89D0          MOV    AX,DX                              
0B28:0052 0430          ADD    AL,30                              
0B28:0054 AA            STOSB                                       
0B28:0055 41            INC    CX                                 
0B28:0056 58            POP    AX                                 
0B28:0057 09C0          OR    AX,AX                              
0B28:0059 75F0          JNZ    004B                               
0B28:005B 89FE          MOV    SI,DI                              
0B28:005D 4E            DEC    SI                                 
0B28:005E 5F            POP    DI                                 
0B28:005F 8A04          MOV    AL,[SI]                            
0B28:0061 4E            DEC    SI                                 
0B28:0062 AA            STOSB                                       
0B28:0063 E2FA          LOOP    005F                               
0B28:0065 5B            POP    BX                                 
0B28:0066 58            POP    AX                                 
0B28:0067 E896FF        CALL    0000                               
0B28:006A BE1900        MOV    SI,0019                            
0B28:006D B90600        MOV    CX,0006                            
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       
0B28:0072 B00D          MOV    AL,0D                              
0B28:0074 AA            STOSB                                       
0B28:0075 B00A          MOV    AL,0A                              
0B28:0077 AA            STOSB                                       
0B28:0078 B024          MOV    AL,24                              
0B28:007A AA            STOSB                                       
0B28:007B 5E            POP    SI                                 
0B28:007C 5F            POP    DI                                 
0B28:007D C3            RET                                       
0B28:007E B8410B        MOV    AX,0B41                            
0B28:0081 8ED8          MOV    DS,AX                              
0B28:0083 8EC0          MOV    ES,AX                              
0B28:0085 B8C7CF        MOV    AX,CFC7                            
0B28:0088 BB2100        MOV    BX,0021                            
0B28:008B E89BFF        CALL    0029                               
0B28:008E BA0500        MOV    DX,0005                            
0B28:0091 B409          MOV    AH,09                              
0B28:0093 CD21          INT    21                                 
0B28:0095 B8004C        MOV    AX,4C00                            
0B28:0098 CD21          INT    21                                 
0B28:009A EF            OUT    DX,AX                              
-

-r ip

IP 0100
:007e

-

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=007E   NV UP EI PL NZ NA PO NC 
0B28:007E B8410B        MOV    AX,0B41                            
-t2


AX=0B41  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0081   NV UP EI PL NZ NA PO NC 
0B28:0081 8ED8          MOV    DS,AX                              

AX=0B41  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B28  SS=0B28  CS=0B28  IP=0083   NV UP EI PL NZ NA PO NC 
0B28:0083 8EC0          MOV    ES,AX                              
-e ds:000 00 00 00 00 00

-e ds:005 00 00 00 00 00 00 00 00 00 00 00

-e ds:010 00 00 00 00 00 00 00 00 00

-e ds:020 db    '.'

-d ds:000 100

0B41:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0B41:0010  00 00 00 00 00 00 00 00-00 1D 2A E4 8A 47 04 50   ..........*..G.P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B41:0050  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B41:0060  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B41:0070  8A 45 10 03 45 02 03 C6-50 FF 36 2C 4B 56 E8 45   .E..E...P.6,KV.E
0B41:0080  07 89 46 FA 0B C0 75 06-46 39 76 FE 77 DA 8A 45   ..F...u.F9v.w..E
0B41:0090  10 2A E4 03 45 02 50 50-56 E8 AC F4 FF 76 08 57   .*..E.PPV....v.W
0B41:00A0  6A 00 8A 45 12 2A E4 50-E8 E5 EA 57 E8 E1 D7 8B   j..E.*.P...W....
0B41:00B0  46 FA 5E 5F C9 C2 06 00-55 8B EC 56 FF 76 08 FF   F.^_....U..V.v..
0B41:00C0  76 06 6A 15 6A 00 E8 47-D2 8B F0 0B F0 75 0F FF   v.j.j..G.....u..
0B41:00D0  76 08 FF 76 06 6A 08 6A-00 E8 34 D2 8B F0 8B C6   v..v.j.j..4.....
0B41:00E0  5E C9 C2 06 00 00 83 3E-2C 4B FF 74 07 FF 36 2C   ^......>,K.t..6,
0B41:00F0  4B E8 60 02 33 C0 A3 CE-49 50 E8 63 01 A3 2C 4B   K.`.3...IP.c..,K
0B41:0100  3D                                                =
-t3


AX=0B41  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0085   NV UP EI PL NZ NA PO NC 
0B28:0085 B8C7CF        MOV    AX,CFC7                            

AX=CFC7  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0088   NV UP EI PL NZ NA PO NC 
0B28:0088 BB2100        MOV    BX,0021                            

AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=008B   NV UP EI PL NZ NA PO NC 
0B28:008B E89BFF        CALL    0029                               
-t8


AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0029   NV UP EI PL NZ NA PO NC 
0B28:0029 57            PUSH    DI                                 

AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFEA  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=002A   NV UP EI PL NZ NA PO NC 
0B28:002A 56            PUSH    SI                                 

AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFE8  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=002B   NV UP EI PL NZ NA PO NC 
0B28:002B BF0500        MOV    DI,0005                            

AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=002E   NV UP EI PL NZ NA PO NC 
0B28:002E FC            CLD                                       

AX=CFC7  BX=0021  CX=0000  DX=0000  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=002F   NV UP EI PL NZ NA PO NC 
0B28:002F 99            CWD                                       

AX=CFC7  BX=0021  CX=0000  DX=FFFF  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0030   NV UP EI PL NZ NA PO NC 
0B28:0030 F7FB          IDIV    BX                                 

AX=FE8A  BX=0021  CX=0000  DX=FFFD  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0032   NV UP EI PL NZ NA PO NC 
0B28:0032 A90080        TEST    AX,8000                            

AX=FE8A  BX=0021  CX=0000  DX=FFFD  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0035   NV UP EI NG NZ NA PE NC 
0B28:0035 7409          JZ    0040                               
-d ds:000 040

0B41:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
0B41:0010  00 00 00 00 00 00 00 00-00 1D 2A E4 8A 47 04 50   ..........*..G.P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t16


AX=FE8A  BX=0021  CX=0000  DX=FFFD  SP=FFE8  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0037   NV UP EI NG NZ NA PE NC 
0B28:0037 50            PUSH    AX                                 

AX=FE8A  BX=0021  CX=0000  DX=FFFD  SP=FFE6  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0038   NV UP EI NG NZ NA PE NC 
0B28:0038 B02D          MOV    AL,2D                              

AX=FE2D  BX=0021  CX=0000  DX=FFFD  SP=FFE6  BP=0000  SI=0000  DI=0005  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=003A   NV UP EI NG NZ NA PE NC 
0B28:003A AA            STOSB                                       

AX=FE2D  BX=0021  CX=0000  DX=FFFD  SP=FFE6  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=003B   NV UP EI NG NZ NA PE NC 
0B28:003B 58            POP    AX                                 

AX=FE8A  BX=0021  CX=0000  DX=FFFD  SP=FFE8  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=003C   NV UP EI NG NZ NA PE NC 
0B28:003C F7D8          NEG    AX                                 

AX=0176  BX=0021  CX=0000  DX=FFFD  SP=FFE8  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=003E   NV UP EI PL NZ AC PO CY 
0B28:003E F7DA          NEG    DX                                 

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE8  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0040   NV UP EI PL NZ AC PE CY 
0B28:0040 52            PUSH    DX                                 

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE6  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0041   NV UP EI PL NZ AC PE CY 
0B28:0041 53            PUSH    BX                                 

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE4  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0042   NV UP EI PL NZ AC PE CY 
0B28:0042 57            PUSH    DI                                 

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0043   NV UP EI PL NZ AC PE CY 
0B28:0043 BF0000        MOV    DI,0000                            

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0046   NV UP EI PL NZ AC PE CY 
0B28:0046 31C9          XOR    CX,CX                              

AX=0176  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0048   NV UP EI PL ZR NA PE NC 
0B28:0048 BB0A00        MOV    BX,000A                            

AX=0176  BX=000A  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004B   NV UP EI PL ZR NA PE NC 
0B28:004B 31D2          XOR    DX,DX                              

AX=0176  BX=000A  CX=0000  DX=0000  SP=FFE2  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004D   NV UP EI PL ZR NA PE NC 
0B28:004D F7F3          DIV    BX                                 

AX=0025  BX=000A  CX=0000  DX=0004  SP=FFE2  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004F   NV UP EI PL ZR NA PE NC 
0B28:004F 50            PUSH    AX                                 

AX=0025  BX=000A  CX=0000  DX=0004  SP=FFE0  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0050   NV UP EI PL ZR NA PE NC 
0B28:0050 89D0          MOV    AX,DX                              

AX=0004  BX=000A  CX=0000  DX=0004  SP=FFE0  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0052   NV UP EI PL ZR NA PE NC 
0B28:0052 0430          ADD    AL,30                              

AX=0034  BX=000A  CX=0000  DX=0004  SP=FFE0  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0054   NV UP EI PL NZ NA PO NC 
0B28:0054 AA            STOSB                                       

AX=0034  BX=000A  CX=0000  DX=0004  SP=FFE0  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0055   NV UP EI PL NZ NA PO NC 
0B28:0055 41            INC    CX                                 

AX=0034  BX=000A  CX=0001  DX=0004  SP=FFE0  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0056   NV UP EI PL NZ NA PO NC 
0B28:0056 58            POP    AX                                 

AX=0025  BX=000A  CX=0001  DX=0004  SP=FFE2  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0057   NV UP EI PL NZ NA PO NC 
0B28:0057 09C0          OR    AX,AX                              

AX=0025  BX=000A  CX=0001  DX=0004  SP=FFE2  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0059   NV UP EI PL NZ NA PO NC 
0B28:0059 75F0          JNZ    004B                               
-d ds:000 040

0B41:0000  34 00 00 00 00 2D 00 00-00 00 00 00 00 00 00 00   4....-..........
0B41:0010  00 00 00 00 00 00 00 00-00 1D 2A E4 8A 47 04 50   ..........*..G.P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t10


AX=0025  BX=000A  CX=0001  DX=0004  SP=FFE2  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004B   NV UP EI PL NZ NA PO NC 
0B28:004B 31D2          XOR    DX,DX                              

AX=0025  BX=000A  CX=0001  DX=0000  SP=FFE2  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004D   NV UP EI PL ZR NA PE NC 
0B28:004D F7F3          DIV    BX                                 

AX=0003  BX=000A  CX=0001  DX=0007  SP=FFE2  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004F   NV UP EI PL ZR NA PE NC 
0B28:004F 50            PUSH    AX                                 

AX=0003  BX=000A  CX=0001  DX=0007  SP=FFE0  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0050   NV UP EI PL ZR NA PE NC 
0B28:0050 89D0          MOV    AX,DX                              

AX=0007  BX=000A  CX=0001  DX=0007  SP=FFE0  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0052   NV UP EI PL ZR NA PE NC 
0B28:0052 0430          ADD    AL,30                              

AX=0037  BX=000A  CX=0001  DX=0007  SP=FFE0  BP=0000  SI=0000  DI=0001  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0054   NV UP EI PL NZ NA PO NC 
0B28:0054 AA            STOSB                                       

AX=0037  BX=000A  CX=0001  DX=0007  SP=FFE0  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0055   NV UP EI PL NZ NA PO NC 
0B28:0055 41            INC    CX                                 

AX=0037  BX=000A  CX=0002  DX=0007  SP=FFE0  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0056   NV UP EI PL NZ NA PO NC 
0B28:0056 58            POP    AX                                 

AX=0003  BX=000A  CX=0002  DX=0007  SP=FFE2  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0057   NV UP EI PL NZ NA PO NC 
0B28:0057 09C0          OR    AX,AX                              

AX=0003  BX=000A  CX=0002  DX=0007  SP=FFE2  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0059   NV UP EI PL NZ NA PE NC 
0B28:0059 75F0          JNZ    004B                               

AX=0003  BX=000A  CX=0002  DX=0007  SP=FFE2  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004B   NV UP EI PL NZ NA PE NC 
0B28:004B 31D2          XOR    DX,DX                              

AX=0003  BX=000A  CX=0002  DX=0000  SP=FFE2  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004D   NV UP EI PL ZR NA PE NC 
0B28:004D F7F3          DIV    BX                                 

AX=0000  BX=000A  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=004F   NV UP EI PL ZR NA PE NC 
0B28:004F 50            PUSH    AX                                 

AX=0000  BX=000A  CX=0002  DX=0003  SP=FFE0  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0050   NV UP EI PL ZR NA PE NC 
0B28:0050 89D0          MOV    AX,DX                              

AX=0003  BX=000A  CX=0002  DX=0003  SP=FFE0  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0052   NV UP EI PL ZR NA PE NC 
0B28:0052 0430          ADD    AL,30                              

AX=0033  BX=000A  CX=0002  DX=0003  SP=FFE0  BP=0000  SI=0000  DI=0002  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0054   NV UP EI PL NZ NA PE NC 
0B28:0054 AA            STOSB                                       
-t4


AX=0033  BX=000A  CX=0002  DX=0003  SP=FFE0  BP=0000  SI=0000  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0055   NV UP EI PL NZ NA PE NC 
0B28:0055 41            INC    CX                                 

AX=0033  BX=000A  CX=0003  DX=0003  SP=FFE0  BP=0000  SI=0000  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0056   NV UP EI PL NZ NA PE NC 
0B28:0056 58            POP    AX                                 

AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0057   NV UP EI PL NZ NA PE NC 
0B28:0057 09C0          OR    AX,AX                              

AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0059   NV UP EI PL ZR NA PE NC 
0B28:0059 75F0          JNZ    004B                               
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 00 00-00 00 00 00 00 00 00 00   473..-..........
0B41:0010  00 00 00 00 00 00 00 00-00 1D 2A E4 8A 47 04 50   ..........*..G.P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t


AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=0000  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005B   NV UP EI PL ZR NA PE NC 
0B28:005B 89FE          MOV    SI,DI                              
-t6


AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=0003  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005D   NV UP EI PL ZR NA PE NC 
0B28:005D 4E            DEC    SI                                 

AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=0002  DI=0003  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005E   NV UP EI PL NZ NA PO NC 
0B28:005E 5F            POP    DI                                 

AX=0000  BX=000A  CX=0003  DX=0003  SP=FFE4  BP=0000  SI=0002  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005F   NV UP EI PL NZ NA PO NC 
0B28:005F 8A04          MOV    AL,[SI]                            DS:0002=33

AX=0033  BX=000A  CX=0003  DX=0003  SP=FFE4  BP=0000  SI=0002  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0061   NV UP EI PL NZ NA PO NC 
0B28:0061 4E            DEC    SI                                 

AX=0033  BX=000A  CX=0003  DX=0003  SP=FFE4  BP=0000  SI=0001  DI=0006  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0062   NV UP EI PL NZ NA PO NC 
0B28:0062 AA            STOSB                                       

AX=0033  BX=000A  CX=0003  DX=0003  SP=FFE4  BP=0000  SI=0001  DI=0007  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0063   NV UP EI PL NZ NA PO NC 
0B28:0063 E2FA          LOOP    005F                               
-t4


AX=0033  BX=000A  CX=0002  DX=0003  SP=FFE4  BP=0000  SI=0001  DI=0007  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005F   NV UP EI PL NZ NA PO NC 
0B28:005F 8A04          MOV    AL,[SI]                            DS:0001=37

AX=0037  BX=000A  CX=0002  DX=0003  SP=FFE4  BP=0000  SI=0001  DI=0007  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0061   NV UP EI PL NZ NA PO NC 
0B28:0061 4E            DEC    SI                                 

AX=0037  BX=000A  CX=0002  DX=0003  SP=FFE4  BP=0000  SI=0000  DI=0007  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0062   NV UP EI PL ZR NA PE NC 
0B28:0062 AA            STOSB                                       

AX=0037  BX=000A  CX=0002  DX=0003  SP=FFE4  BP=0000  SI=0000  DI=0008  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0063   NV UP EI PL ZR NA PE NC 
0B28:0063 E2FA          LOOP    005F                               
-t4


AX=0037  BX=000A  CX=0001  DX=0003  SP=FFE4  BP=0000  SI=0000  DI=0008  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=005F   NV UP EI PL ZR NA PE NC 
0B28:005F 8A04          MOV    AL,[SI]                            DS:0000=34

AX=0034  BX=000A  CX=0001  DX=0003  SP=FFE4  BP=0000  SI=0000  DI=0008  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0061   NV UP EI PL ZR NA PE NC 
0B28:0061 4E            DEC    SI                                 

AX=0034  BX=000A  CX=0001  DX=0003  SP=FFE4  BP=0000  SI=FFFF  DI=0008  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0062   NV UP EI NG NZ AC PE NC 
0B28:0062 AA            STOSB                                       

AX=0034  BX=000A  CX=0001  DX=0003  SP=FFE4  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0063   NV UP EI NG NZ AC PE NC 
0B28:0063 E2FA          LOOP    005F                               
-t3


AX=0034  BX=000A  CX=0000  DX=0003  SP=FFE4  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0065   NV UP EI NG NZ AC PE NC 
0B28:0065 5B            POP    BX                                 

AX=0034  BX=0021  CX=0000  DX=0003  SP=FFE6  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0066   NV UP EI NG NZ AC PE NC 
0B28:0066 58            POP    AX                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE8  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0067   NV UP EI NG NZ AC PE NC 
0B28:0067 E896FF        CALL    0000                               
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 33 37-34 00 00 00 00 00 00 00   473..-374.......
0B41:0010  00 00 00 00 00 00 00 00-00 1D 2A E4 8A 47 04 50   ..........*..G.P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t19


AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE6  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0000   NV UP EI NG NZ AC PE NC 
0B28:0000 57            PUSH    DI                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE4  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0001   NV UP EI NG NZ AC PE NC 
0B28:0001 56            PUSH    SI                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0002   NV UP EI NG NZ AC PE NC 
0B28:0002 BF1900        MOV    DI,0019                            

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=0019  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0005   NV UP EI NG NZ AC PE NC 
0B28:0005 47            INC    DI                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0006   NV UP EI PL NZ NA PO NC 
0B28:0006 50            PUSH    AX                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0007   NV UP EI PL NZ NA PO NC 
0B28:0007 B030          MOV    AL,30                              

AX=0030  BX=0021  CX=0000  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PO NC 
0B28:0009 B90500        MOV    CX,0005                            

AX=0030  BX=0021  CX=0005  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000C   NV UP EI PL NZ NA PO NC 
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       

AX=0030  BX=0021  CX=0004  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000C   NV UP EI PL NZ NA PO NC 
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       

AX=0030  BX=0021  CX=0003  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000C   NV UP EI PL NZ NA PO NC 
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       

AX=0030  BX=0021  CX=0002  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000C   NV UP EI PL NZ NA PO NC 
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       

AX=0030  BX=0021  CX=0001  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000C   NV UP EI PL NZ NA PO NC 
0B28:000C F3            REPZ                                       
0B28:000D AA            STOSB                                       

AX=0030  BX=0021  CX=0000  DX=0003  SP=FFE0  BP=0000  SI=FFFF  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ NA PO NC 
0B28:000E 58            POP    AX                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=000F   NV UP EI PL NZ NA PO NC 
0B28:000F BF1900        MOV    DI,0019                            

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=0019  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0012   NV UP EI PL NZ NA PO NC 
0B28:0012 47            INC    DI                                 

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=FFFF  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0013   NV UP EI PL NZ NA PO NC 
0B28:0013 BE0A00        MOV    SI,000A                            

AX=0003  BX=0021  CX=0000  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0016   NV UP EI PL NZ NA PO NC 
0B28:0016 B90500        MOV    CX,0005                            

AX=0003  BX=0021  CX=0005  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0019   NV UP EI PL NZ NA PO NC 
0B28:0019 F7E6          MUL    SI                                 

AX=001E  BX=0021  CX=0005  DX=0000  SP=FFE2  BP=0000  SI=000A  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001B   NV UP EI PL NZ NA PE NC 
0B28:001B F7F3          DIV    BX                                 

AX=0000  BX=0021  CX=0005  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PE NC 
0B28:001D 0430          ADD    AL,30                              

AX=0030  BX=0021  CX=0005  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PE NC 
0B28:001F AA            STOSB                                       

AX=0030  BX=0021  CX=0005  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PE NC 
0B28:0020 89D0          MOV    AX,DX                              

AX=001E  BX=0021  CX=0005  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PE NC 
0B28:0022 09C0          OR    AX,AX                              

AX=001E  BX=0021  CX=0005  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE NC 
0B28:0024 E0F3          LOOPNZ    0019                               

AX=001E  BX=0021  CX=0004  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0019   NV UP EI PL NZ NA PE NC 
0B28:0019 F7E6          MUL    SI                                 
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 33 37-34 00 00 00 00 00 00 00   473..-374.......
0B41:0010  00 00 00 00 00 00 00 00-00 1D 30 30 30 30 30 50   ..........00000P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t7


AX=012C  BX=0021  CX=0004  DX=0000  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001B   NV UP EI PL NZ NA PO NC 
0B28:001B F7F3          DIV    BX                                 

AX=0009  BX=0021  CX=0004  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PO NC 
0B28:001D 0430          ADD    AL,30                              

AX=0039  BX=0021  CX=0004  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PE NC 
0B28:001F AA            STOSB                                       

AX=0039  BX=0021  CX=0004  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PE NC 
0B28:0020 89D0          MOV    AX,DX                              

AX=0003  BX=0021  CX=0004  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PE NC 
0B28:0022 09C0          OR    AX,AX                              

AX=0003  BX=0021  CX=0004  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE NC 
0B28:0024 E0F3          LOOPNZ    0019                               

AX=0003  BX=0021  CX=0003  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0019   NV UP EI PL NZ NA PE NC 
0B28:0019 F7E6          MUL    SI                                 
-t


AX=001E  BX=0021  CX=0003  DX=0000  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001B   NV UP EI PL NZ NA PE NC 
0B28:001B F7F3          DIV    BX                                 
-t5


AX=0000  BX=0021  CX=0003  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PE NC 
0B28:001D 0430          ADD    AL,30                              

AX=0030  BX=0021  CX=0003  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PE NC 
0B28:001F AA            STOSB                                       

AX=0030  BX=0021  CX=0003  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PE NC 
0B28:0020 89D0          MOV    AX,DX                              

AX=001E  BX=0021  CX=0003  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PE NC 
0B28:0022 09C0          OR    AX,AX                              

AX=001E  BX=0021  CX=0003  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE NC 
0B28:0024 E0F3          LOOPNZ    0019                               
-t


AX=001E  BX=0021  CX=0002  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0019   NV UP EI PL NZ NA PE NC 
0B28:0019 F7E6          MUL    SI                                 
-t5


AX=012C  BX=0021  CX=0002  DX=0000  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001B   NV UP EI PL NZ NA PO NC 
0B28:001B F7F3          DIV    BX                                 

AX=0009  BX=0021  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PO NC 
0B28:001D 0430          ADD    AL,30                              

AX=0039  BX=0021  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PE NC 
0B28:001F AA            STOSB                                       

AX=0039  BX=0021  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PE NC 
0B28:0020 89D0          MOV    AX,DX                              

AX=0003  BX=0021  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PE NC 
0B28:0022 09C0          OR    AX,AX                              
-t


AX=0003  BX=0021  CX=0002  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE NC 
0B28:0024 E0F3          LOOPNZ    0019                               
-t


AX=0003  BX=0021  CX=0001  DX=0003  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0019   NV UP EI PL NZ NA PE NC 
0B28:0019 F7E6          MUL    SI                                 
-t5


AX=001E  BX=0021  CX=0001  DX=0000  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001B   NV UP EI PL NZ NA PE NC 
0B28:001B F7F3          DIV    BX                                 

AX=0000  BX=0021  CX=0001  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PE NC 
0B28:001D 0430          ADD    AL,30                              

AX=0030  BX=0021  CX=0001  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PE NC 
0B28:001F AA            STOSB                                       

AX=0030  BX=0021  CX=0001  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0020   NV UP EI PL NZ NA PE NC 
0B28:0020 89D0          MOV    AX,DX                              

AX=001E  BX=0021  CX=0001  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PE NC 
0B28:0022 09C0          OR    AX,AX                              
-t4


AX=001E  BX=0021  CX=0001  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PE NC 
0B28:0024 E0F3          LOOPNZ    0019                               

AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE2  BP=0000  SI=000A  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0026   NV UP EI PL NZ NA PE NC 
0B28:0026 5E            POP    SI                                 

AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE4  BP=0000  SI=FFFF  DI=001F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0027   NV UP EI PL NZ NA PE NC 
0B28:0027 5F            POP    DI                                 

AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE6  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0028   NV UP EI PL NZ NA PE NC 
0B28:0028 C3            RET                                       
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 33 37-34 00 00 00 00 00 00 00   473..-374.......
0B41:0010  00 00 00 00 00 00 00 00-00 1D 30 39 30 39 30 50   ..........09090P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-p


AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=FFFF  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=006A   NV UP EI PL NZ NA PE NC 
0B28:006A BE1900        MOV    SI,0019                            
-t10


AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=0019  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=006D   NV UP EI PL NZ NA PE NC 
0B28:006D B90600        MOV    CX,0006                            

AX=001E  BX=0021  CX=0006  DX=001E  SP=FFE8  BP=0000  SI=0019  DI=0009  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0005  DX=001E  SP=FFE8  BP=0000  SI=001A  DI=000A  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0004  DX=001E  SP=FFE8  BP=0000  SI=001B  DI=000B  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0003  DX=001E  SP=FFE8  BP=0000  SI=001C  DI=000C  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0002  DX=001E  SP=FFE8  BP=0000  SI=001D  DI=000D  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0001  DX=001E  SP=FFE8  BP=0000  SI=001E  DI=000E  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0070   NV UP EI PL NZ NA PE NC 
0B28:0070 F3            REPZ                                       
0B28:0071 A4            MOVSB                                       

AX=001E  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=000F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0072   NV UP EI PL NZ NA PE NC 
0B28:0072 B00D          MOV    AL,0D                              

AX=000D  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=000F  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0074   NV UP EI PL NZ NA PE NC 
0B28:0074 AA            STOSB                                       

AX=000D  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=0010  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0075   NV UP EI PL NZ NA PE NC 
0B28:0075 B00A          MOV    AL,0A                              

AX=000A  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=0010  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0077   NV UP EI PL NZ NA PE NC 
0B28:0077 AA            STOSB                                       

AX=000A  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=0011  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0078   NV UP EI PL NZ NA PE NC 
0B28:0078 B024          MOV    AL,24                              

AX=0024  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=0011  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=007A   NV UP EI PL NZ NA PE NC 
0B28:007A AA            STOSB                                       

AX=0024  BX=0021  CX=0000  DX=001E  SP=FFE8  BP=0000  SI=001F  DI=0012  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=007B   NV UP EI PL NZ NA PE NC 
0B28:007B 5E            POP    SI                                 

AX=0024  BX=0021  CX=0000  DX=001E  SP=FFEA  BP=0000  SI=0000  DI=0012  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=007C   NV UP EI PL NZ NA PE NC 
0B28:007C 5F            POP    DI                                 

AX=0024  BX=0021  CX=0000  DX=001E  SP=FFEC  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=007D   NV UP EI PL NZ NA PE NC 
0B28:007D C3            RET                                       
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 33 37-34 1D 30 39 30 39 30 0D   473..-374.09090.
0B41:0010  0A 24 00 00 00 00 00 00-00 1D 30 39 30 39 30 50   .$........09090P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-t3


AX=0024  BX=0021  CX=0000  DX=001E  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=008E   NV UP EI PL NZ NA PE NC 
0B28:008E BA0500        MOV    DX,0005                            

AX=0024  BX=0021  CX=0000  DX=0005  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0091   NV UP EI PL NZ NA PE NC 
0B28:0091 B409          MOV    AH,09                              

AX=0924  BX=0021  CX=0000  DX=0005  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0093   NV UP EI PL NZ NA PE NC 
0B28:0093 CD21          INT    21                                 
-d ds:000 040

0B41:0000  34 37 33 00 00 2D 33 37-34 1D 30 39 30 39 30 0D   473..-374.09090.
0B41:0010  0A 24 00 00 00 00 00 00-00 1D 30 39 30 39 30 50   .$........09090P
0B41:0020  DB 2E 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   ....E.P.E.*..E.P
0B41:0030  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B41:0040  89                                                .
-p

-37409090

AX=0924  BX=0021  CX=0000  DX=0005  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0095   NV UP EI PL NZ NA PE NC 
0B28:0095 B8004C        MOV    AX,4C00                            
-t


AX=4C00  BX=0021  CX=0000  DX=0005  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B41  ES=0B41  SS=0B28  CS=0B28  IP=0098   NV UP EI PL NZ NA PE NC 
0B28:0098 CD21          INT    21                                 
-

-

-q

Неактивен

#19 25-01-2017 16:40:33

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

2.11.Assembler которая ищет целое слово, введенное с клавиатуры в файле  wesna.dat

Код:

sega    segment 
            assume    cs:sega,ds:sega 
            org    100h 
        beg:    mov    ah,3dh        ;открытие файла 
            mov    al,2        ;атрибут   2-чт-з 
            lea    dx,fname 
            int    21h 
            mov    handle,ax 
                         
                 
             
            mov    si,0 
            mov    di,0 
         m1:     mov    ah,42h        ;установка указ 
            mov    al,0        ;код метода смещ 0-абс смещ 
            mov    bx,handle      
                         
            mov    cx,0         
            mov    dx,t        ;младш часть смещ t 
            int    21h        ;в начале t=0 
            mov    ah,3fh        ;чтение ф 
            mov    bx,handle 
            mov    cx,6        ;сколько читать 
            lea     dx,buf        ;куда читать 
            int    21H 
         
 
        a1:     mov    di,si 
            mov    ah,01h 
            int    21h     
            mov    t1[si],al 
            mov    bl,buf[di] 
            cmp    al,bl 
            jne    m4 
            inc    si 
            inc    di 
            cmp    si,6 
            cmp    di,6 
            jne    a1 
                        je    m2         
                                                      
                     
                     
        m4:    add    t,6        ;не нашли -переходим к след 
            inc    si 
            cmp    si,6;'''5 
            jne    m1        ;если все просмотрели и не 
             
                        mov    ah,09h        ;нашли то выход 
            lea    dx,tx1 
            int    21h 
        m3:    mov    ah,08h 
            int    21h 
            int    20h 
 
        m2:    mov    ah,09h        ;нашли и вывели на экран 
            lea    dx,tx2             
            int    21h 
            mov    ah,40h 
            lea    dx,buf 
            mov    cx,6 
            mov    bx,1 
            int    21h 
            jmp    m3 
        tx1    db    '  не найдена  ','$' 
        tx2    db    '  найдена  ','$' 
                 
        t    dw    0                 
        fname    db    'wesna.dat',0 
        handle    dw    ? 
        buf    db    '       ' 
        t1       db    '       ' 
             
             
        sega    ends 
            end    beg

Код:

a  100
mov    ah,3D          ;®вЄалвЁҐ д ©« 
mov    al,02          ; ваЁЎгв   2-зв-§
mov    dx,01AA
int    21
mov    [01B4],ax
mov    si,0000
mov    di,0000
mov    ah,42          ;гбв ­®ўЄ  гЄ §
mov    al,00          ;Є®¤ ¬Ґв®¤  ᬥй 0- Ўб ᬥй 
mov    bx,[01B4]
mov    cx,0000        
mov    dx,[01A8]      ;¬« ¤и з бвм ᬥй t
int    21             ;ў ­ з «Ґ t=0
mov    ah,3F          ;з⥭ЁҐ д
mov    bx,[01B4]
mov    cx,0006        ;бЄ®«мЄ® зЁв вм 
mov    dx,01B6        ;Єг¤  зЁв вм
int    21
nop
mov    di,si
mov    ah,01
int    21
mov    [si+01BD],al
mov    bl,[di+01B6]
cmp    al,bl
jne    0150
inc    si
inc    di
cmp    si,0006
cmp    di,0006
jne    0131
je     0167
add    word ptr [01A8],000 ;­Ґ ­ и«Ё -ЇҐаҐе®¤Ё¬ Є б«Ґ¤
inc    si
cmp    si,0006             ;'''5
jne    0112                ;Ґб«Ё ўбҐ Їа®б¬®в५Ё Ё ­Ґ ­ и«Ё в® ўл室
mov    ah,09               ;­ и«Ё Ё ўлўҐ«Ё ­  нЄа ­ 
mov    dx,017D
int    21
mov    ah,08
int    21
int    20                  ;tx1    db    '  ­Ґ ­ ©¤Ґ­   ','$'
                           ;tx2    db    '  ­ ©¤Ґ­   ','$'
                           ;t    dw    0
                           ;fname    db    'wesna.dat',0
                           ;handle    dw    ?
                           ;buf    db    '       '
                           ;t1       db    '       ' 


u 100 167
d ds:100 200
r
t2
t
p
t7
t
p
t3
t
r ip
0131
t
t2
p
d ds:100 200
t4
t3
t6
p
t4
r ip
0131
t3
p
t3
d ds:100 200
t6
p
t3
p
t4
r ip
0131
t3
p
t9
d ds:100 200
t
t3
p
t4
r ip
0131
t3
p
t7
d ds:100 200
t4
t2
p
t4
r ip
0131
t3
p
t7
d ds:100 200
t4
t2
p
t4
r ip
0131
t
t2
p
t4
t4
t2
p
t
d ds:100 200
p




q
             ђ…‡“‹њ’Ђ’:
                      handle  = 0245h
           ¬« ¤и з бвм ᬥй t = 0000
                           t1 = 45h
                    buf 017D  = 56h

Код:

-a  100

0B28:0100 mov    ah,3D          ;®вЄалвЁҐ д ©« 

0B28:0102 mov    al,02          ; ваЁЎгв   2-зв-§

0B28:0104 mov    dx,01AA

0B28:0107 int    21

0B28:0109 mov    [01B4],ax

0B28:010C mov    si,0000

0B28:010F mov    di,0000

0B28:0112 mov    ah,42          ;гбв ­®ўЄ  гЄ §

0B28:0114 mov    al,00          ;Є®¤ ¬Ґв®¤  ᬥй 0- Ўб ᬥй 

0B28:0116 mov    bx,[01B4]

0B28:011A mov    cx,0000        

0B28:011D mov    dx,[01A8]      ;¬« ¤и з бвм ᬥй t

0B28:0121 int    21             ;ў ­ з «Ґ t=0

0B28:0123 mov    ah,3F          ;з⥭ЁҐ д

0B28:0125 mov    bx,[01B4]

0B28:0129 mov    cx,0006        ;бЄ®«мЄ® зЁв вм 

0B28:012C mov    dx,01B6        ;Єг¤  зЁв вм

0B28:012F int    21

0B28:0131 nop

0B28:0132 mov    di,si

0B28:0134 mov    ah,01

0B28:0136 int    21

0B28:0138 mov    [si+01BD],al

0B28:013C mov    bl,[di+01B6]

0B28:0140 cmp    al,bl

0B28:0142 jne    0150

0B28:0144 inc    si

0B28:0145 inc    di

0B28:0146 cmp    si,0006

0B28:0149 cmp    di,0006

0B28:014C jne    0131

0B28:014E je     0167

0B28:0150 add    word ptr [01A8],000 ;­Ґ ­ и«Ё -ЇҐаҐе®¤Ё¬ Є б«Ґ¤

0B28:0155 inc    si

0B28:0156 cmp    si,0006             ;'''5

0B28:0159 jne    0112                ;Ґб«Ё ўбҐ Їа®б¬®в५Ё Ё ­Ґ ­ и«Ё в® ўл室

0B28:015B mov    ah,09               ;­ и«Ё Ё ўлўҐ«Ё ­  нЄа ­ 

0B28:015D mov    dx,017D

0B28:0160 int    21

0B28:0162 mov    ah,08

0B28:0164 int    21

0B28:0166 int    20                  ;tx1    db    '  ­Ґ ­ ©¤Ґ­   ','$'

0B28:0168                            ;tx2    db    '  ­ ©¤Ґ­   ','$'

0B28:0168                            ;t    dw    0

0B28:0168                            ;fname    db    'wesna.dat',0

0B28:0168                            ;handle    dw    ?

0B28:0168                            ;buf    db    '       '

0B28:0168                            ;t1       db    '       ' 

0B28:0168 

-

-u 100 167

0B28:0100 B43D          MOV    AH,3D                              
0B28:0102 B002          MOV    AL,02                              
0B28:0104 BAAA01        MOV    DX,01AA                            
0B28:0107 CD21          INT    21                                 
0B28:0109 A3B401        MOV    [01B4],AX                          
0B28:010C BE0000        MOV    SI,0000                            
0B28:010F BF0000        MOV    DI,0000                            
0B28:0112 B442          MOV    AH,42                              
0B28:0114 B000          MOV    AL,00                              
0B28:0116 8B1EB401      MOV    BX,[01B4]                          
0B28:011A B90000        MOV    CX,0000                            
0B28:011D 8B16A801      MOV    DX,[01A8]                          
0B28:0121 CD21          INT    21                                 
0B28:0123 B43F          MOV    AH,3F                              
0B28:0125 8B1EB401      MOV    BX,[01B4]                          
0B28:0129 B90600        MOV    CX,0006                            
0B28:012C BAB601        MOV    DX,01B6                            
0B28:012F CD21          INT    21                                 
0B28:0131 90            NOP                                       
0B28:0132 89F7          MOV    DI,SI                              
0B28:0134 B401          MOV    AH,01                              
0B28:0136 CD21          INT    21                                 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       
0B28:0140 38D8          CMP    AL,BL                              
0B28:0142 750C          JNZ    0150                               
0B28:0144 46            INC    SI                                 
0B28:0145 47            INC    DI                                 
0B28:0146 83FE06        CMP    SI,+06                             
0B28:0149 83FF06        CMP    DI,+06                             
0B28:014C 75E3          JNZ    0131                               
0B28:014E 7417          JZ    0167                               
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                
0B28:0155 46            INC    SI                                 
0B28:0156 83FE06        CMP    SI,+06                             
0B28:0159 75B7          JNZ    0112                               
0B28:015B B409          MOV    AH,09                              
0B28:015D BA7D01        MOV    DX,017D                            
0B28:0160 CD21          INT    21                                 
0B28:0162 B408          MOV    AH,08                              
0B28:0164 CD21          INT    21                                 
0B28:0166 CD20          INT    20                                 
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 45 02 50 8A-45 11 2A E4 03 45 04 50   .E..E.P.E.*..E.P
0B28:01C0  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0100   NV UP EI PL NZ NA PO NC 
0B28:0100 B43D          MOV    AH,3D                              
-t2


AX=3D00  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0102   NV UP EI PL NZ NA PO NC 
0B28:0102 B002          MOV    AL,02                              

AX=3D02  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0104   NV UP EI PL NZ NA PO NC 
0B28:0104 BAAA01        MOV    DX,01AA                            
-t


AX=3D02  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0107   NV UP EI PL NZ NA PO NC 
0B28:0107 CD21          INT    21                                 
-p


AX=0002  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0109   NV UP EI PL NZ NA PO CY 
0B28:0109 A3B401        MOV    [01B4],AX                          DS:01B4=0245
-t7


AX=0002  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=010C   NV UP EI PL NZ NA PO CY 
0B28:010C BE0000        MOV    SI,0000                            

AX=0002  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=010F   NV UP EI PL NZ NA PO CY 
0B28:010F BF0000        MOV    DI,0000                            

AX=0002  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI PL NZ NA PO CY 
0B28:0112 B442          MOV    AH,42                              

AX=4202  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI PL NZ NA PO CY 
0B28:0114 B000          MOV    AL,00                              

AX=4200  BX=0000  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI PL NZ NA PO CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=4200  BX=0002  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI PL NZ NA PO CY 
0B28:011A B90000        MOV    CX,0000                            

AX=4200  BX=0002  CX=0000  DX=01AA  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI PL NZ NA PO CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B
-t


AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI PL NZ NA PO CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI PL NZ NA PO NC 
0B28:0123 B43F          MOV    AH,3F                              
-t3


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI PL NZ NA PO NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI PL NZ NA PO NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI PL NZ NA PO NC 
0B28:012C BAB601        MOV    DX,01B6                            
-t


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI PL NZ NA PO NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI PL NZ NA PO NC 
0B28:0132 89F7          MOV    DI,SI                              
-t2


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI PL NZ NA PO NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI PL NZ NA PO NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI PL NZ NA PO NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01BD=45
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 02 00 50 8A-45 11 2A E4 03 45 04 50   .E....P.E.*..E.P
0B28:01C0  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-t4


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI PL NZ NA PO NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01B6=50

AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI PL NZ NA PO NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   NV UP EI NG NZ NA PO CY 
0B28:0142 750C          JNZ    0150                               

AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV UP EI NG NZ NA PO CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B
-t3


AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PO NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI NG NZ AC PO CY 
0B28:0159 75B7          JNZ    0112                               
-t6


AX=010A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI NG NZ AC PO CY 
0B28:0112 B442          MOV    AH,42                              

AX=420A  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI NG NZ AC PO CY 
0B28:0114 B000          MOV    AL,00                              

AX=4200  BX=0050  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI NG NZ AC PO CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=4200  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI NG NZ AC PO CY 
0B28:011A B90000        MOV    CX,0000                            

AX=4200  BX=0002  CX=0000  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI NG NZ AC PO CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B

AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI NG NZ AC PO CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI NG NZ AC PO NC 
0B28:0123 B43F          MOV    AH,3F                              
-t4


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI NG NZ AC PO NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI NG NZ AC PO NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI NG NZ AC PO NC 
0B28:012C BAB601        MOV    DX,01B6                            

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI NG NZ AC PO NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t3


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI NG NZ AC PO NC 
0B28:0132 89F7          MOV    DI,SI                              

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI NG NZ AC PO NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI NG NZ AC PO NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI NG NZ AC PO NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01BE=04
-t3


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI NG NZ AC PO NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01B7=8A

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI NG NZ AC PO NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   OV UP EI NG NZ NA PO CY 
0B28:0142 750C          JNZ    0150                               
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 02 00 50 8A-45 11 2A E4 03 0A 0A 50   .E....P.E.*....P
0B28:01C0  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-t6


AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   OV UP EI NG NZ NA PO CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0001  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PO NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI NG NZ AC PE CY 
0B28:0159 75B7          JNZ    0112                               

AX=010A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI NG NZ AC PE CY 
0B28:0112 B442          MOV    AH,42                              

AX=420A  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI NG NZ AC PE CY 
0B28:0114 B000          MOV    AL,00                              
-p


AX=4200  BX=008A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI NG NZ AC PE CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002
-t3


AX=4200  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI NG NZ AC PE CY 
0B28:011A B90000        MOV    CX,0000                            

AX=4200  BX=0002  CX=0000  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI NG NZ AC PE CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B

AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI NG NZ AC PE CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI NG NZ AC PE NC 
0B28:0123 B43F          MOV    AH,3F                              
-t4


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI NG NZ AC PE NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI NG NZ AC PE NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI NG NZ AC PE NC 
0B28:012C BAB601        MOV    DX,01B6                            

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI NG NZ AC PE NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t3


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0001  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI NG NZ AC PE NC 
0B28:0132 89F7          MOV    DI,SI                              

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI NG NZ AC PE NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI NG NZ AC PE NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI NG NZ AC PE NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01BF=50
-t9


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI NG NZ AC PE NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01B8=45

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI NG NZ AC PE NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   NV UP EI NG NZ NA PE CY 
0B28:0142 750C          JNZ    0150                               

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV UP EI NG NZ NA PE CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0002  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PE NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI NG NZ AC PO CY 
0B28:0159 75B7          JNZ    0112                               

AX=010A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI NG NZ AC PO CY 
0B28:0112 B442          MOV    AH,42                              

AX=420A  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI NG NZ AC PO CY 
0B28:0114 B000          MOV    AL,00                              
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 02 00 50 8A-45 11 2A E4 03 0A 0A 0A   .E....P.E.*.....
0B28:01C0  8B 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-t


AX=4200  BX=0045  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI NG NZ AC PO CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002
-t3


AX=4200  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI NG NZ AC PO CY 
0B28:011A B90000        MOV    CX,0000                            

AX=4200  BX=0002  CX=0000  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI NG NZ AC PO CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B

AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI NG NZ AC PO CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI NG NZ AC PO NC 
0B28:0123 B43F          MOV    AH,3F                              
-t4


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI NG NZ AC PO NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI NG NZ AC PO NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI NG NZ AC PO NC 
0B28:012C BAB601        MOV    DX,01B6                            

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI NG NZ AC PO NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t3


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0002  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI NG NZ AC PO NC 
0B28:0132 89F7          MOV    DI,SI                              

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI NG NZ AC PO NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI NG NZ AC PO NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI NG NZ AC PO NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01C0=8B
-t7


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI NG NZ AC PO NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01B9=11

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI NG NZ AC PO NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   NV UP EI NG NZ NA PE CY 
0B28:0142 750C          JNZ    0150                               

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV UP EI NG NZ NA PE CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0003  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PO NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI NG NZ AC PO CY 
0B28:0159 75B7          JNZ    0112                               
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 02 00 50 8A-45 11 2A E4 03 0A 0A 0A   .E....P.E.*.....
0B28:01C0  0A 4E FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   .N..D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-t4


AX=010A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI NG NZ AC PO CY 
0B28:0112 B442          MOV    AH,42                              

AX=420A  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI NG NZ AC PO CY 
0B28:0114 B000          MOV    AL,00                              

AX=4200  BX=0011  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI NG NZ AC PO CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=4200  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI NG NZ AC PO CY 
0B28:011A B90000        MOV    CX,0000                            
-t2


AX=4200  BX=0002  CX=0000  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI NG NZ AC PO CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B

AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI NG NZ AC PO CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI NG NZ AC PO NC 
0B28:0123 B43F          MOV    AH,3F                              
-t4


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI NG NZ AC PO NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI NG NZ AC PO NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI NG NZ AC PO NC 
0B28:012C BAB601        MOV    DX,01B6                            

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI NG NZ AC PO NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t3


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0003  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI NG NZ AC PO NC 
0B28:0132 89F7          MOV    DI,SI                              

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI NG NZ AC PO NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI NG NZ AC PO NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI NG NZ AC PO NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01C1=4E
-t7


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI NG NZ AC PO NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01BA=2A

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI NG NZ AC PO NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   NV UP EI NG NZ NA PO CY 
0B28:0142 750C          JNZ    0150                               

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV UP EI NG NZ NA PO CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0004  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PE NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI NG NZ AC PE CY 
0B28:0159 75B7          JNZ    0112                               
-d ds:100 200

0B28:0100  B4 3D B0 02 BA AA 01 CD-21 A3 B4 01 BE 00 00 BF   .=......!.......
0B28:0110  00 00 B4 42 B0 00 8B 1E-B4 01 B9 00 00 8B 16 A8   ...B............
0B28:0120  01 CD 21 B4 3F 8B 1E B4-01 B9 06 00 BA B6 01 CD   ..!.?...........
0B28:0130  21 90 89 F7 B4 01 CD 21-88 84 BD 01 8A 9D B6 01   !......!........
0B28:0140  38 D8 75 0C 46 47 83 FE-06 83 FF 06 75 E3 74 17   8.u.FG......u.t.
0B28:0150  83 06 A8 01 00 46 83 FE-06 75 B7 B4 09 BA 7D 01   .....F...u....}.
0B28:0160  CD 21 B4 08 CD 21 CD 20-75 05 33 C0 E9 D3 00 8B   .!...!. u.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3 8B F0 0B F0 74 03 E9-B8 00 83 3E CE 49 01 75   .....t.....>.I.u
0B28:0190  50 A1 2C 4B 33 D2 E8 01-07 8B F0 89 56 FE 0B D0   P.,K3.......V...
0B28:01A0  75 06 B8 1F 00 E9 9A 00-8B 1D 2A E4 8A 47 04 50   u.........*..G.P
0B28:01B0  8A 45 10 03 02 00 50 8A-45 11 2A E4 03 0A 0A 0A   .E....P.E.*.....
0B28:01C0  0A 0A FE 8D 44 03 51 50-8E C1 26 FF 34 E8 A2 16   ....D.QP..&.4...
0B28:01D0  89 46 FA A1 2C 4B 33 D2-E8 F7 06 57 E8 AB F4 EB   .F..,K3....W....
0B28:01E0  4B 89 76 FA 6B 1E 2C 4B-0E 8B 87 30 4B 48 89 46   K.v.k.,K...0KH.F
0B28:01F0  FE 33 F6 8B 7E 06 EB 21-8B 1D 2A E4 8A 47 04 50   .3..~..!..*..G.P
0B28:0200  8A                                                .
-t4


AX=010A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0112   NV UP EI NG NZ AC PE CY 
0B28:0112 B442          MOV    AH,42                              

AX=420A  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0114   NV UP EI NG NZ AC PE CY 
0B28:0114 B000          MOV    AL,00                              

AX=4200  BX=002A  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0116   NV UP EI NG NZ AC PE CY 
0B28:0116 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=4200  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011A   NV UP EI NG NZ AC PE CY 
0B28:011A B90000        MOV    CX,0000                            
-t2


AX=4200  BX=0002  CX=0000  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011D   NV UP EI NG NZ AC PE CY 
0B28:011D 8B16A801      MOV    DX,[01A8]                          DS:01A8=1D8B

AX=4200  BX=0002  CX=0000  DX=1D8B  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0121   NV UP EI NG NZ AC PE CY 
0B28:0121 CD21          INT    21                                 
-p


AX=0000  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0123   NV UP EI NG NZ AC PE NC 
0B28:0123 B43F          MOV    AH,3F                              
-t4


AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI NG NZ AC PE NC 
0B28:0125 8B1EB401      MOV    BX,[01B4]                          DS:01B4=0002

AX=3F00  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI NG NZ AC PE NC 
0B28:0129 B90600        MOV    CX,0006                            

AX=3F00  BX=0002  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012C   NV UP EI NG NZ AC PE NC 
0B28:012C BAB601        MOV    DX,01B6                            

AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI NG NZ AC PE NC 
0B28:012F CD21          INT    21                                 
-r ip

IP 012F
:0131

-t


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0004  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0132   NV UP EI NG NZ AC PE NC 
0B28:0132 89F7          MOV    DI,SI                              
-t2


AX=3F00  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI NG NZ AC PE NC 
0B28:0134 B401          MOV    AH,01                              

AX=0100  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0136   NV UP EI NG NZ AC PE NC 
0B28:0136 CD21          INT    21                                 
-p



AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0138   NV UP EI NG NZ AC PE NC 
0B28:0138 8884BD01      MOV    [SI+01BD],AL                       DS:01C2=FE
-t4


AX=010A  BX=0002  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV UP EI NG NZ AC PE NC 
0B28:013C 8A9DB601      MOV    BL,[DI+01B6]                       DS:01BB=E4

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI NG NZ AC PE NC 
0B28:0140 38D8          CMP    AL,BL                              

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0142   NV UP EI PL NZ NA PO CY 
0B28:0142 750C          JNZ    0150                               

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV UP EI PL NZ NA PO CY 
0B28:0150 8306A80100    ADD    WORD PTR [01A8],+00                DS:01A8=1D8B
-t4


AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0005  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0155   NV UP EI PL NZ NA PE NC 
0B28:0155 46            INC    SI                                 

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0006  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0156   NV UP EI PL NZ NA PE NC 
0B28:0156 83FE06        CMP    SI,+06                             

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0006  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0159   NV UP EI PL ZR NA PE NC 
0B28:0159 75B7          JNZ    0112                               

AX=010A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0006  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=015B   NV UP EI PL ZR NA PE NC 
0B28:015B B409          MOV    AH,09                              
-t2


AX=090A  BX=00E4  CX=0006  DX=01B6  SP=FFEE  BP=0000  SI=0006  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=015D   NV UP EI PL ZR NA PE NC 
0B28:015D BA7D01        MOV    DX,017D                            

AX=090A  BX=00E4  CX=0006  DX=017D  SP=FFEE  BP=0000  SI=0006  DI=0005  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0160   NV UP EI PL ZR NA PE NC 
0B28:0160 CD21          INT    21                                 
-p

VиУ‹ррtйё

Неактивен

#20 25-01-2017 17:59:36

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

Ну с первой задачей вроде всё правильно, а вот во-второй имеются нюансы..
Там нужно найти слово из файла. Вы его только отрываете, а нужно ещё и считать в буфер. Если этого не сделать, то расположение данных нам будет не известно, и соответственно поиск не даст результата.

Считывать можно как порциями (например по 512-байт), а можно и сразу весь файл целиком. В последнем случае нужен будет буфер большого размера, т.к. размер файла нам заранее неизвестен. Поэтому обычно читают файл небольшими порциями. Теперь можно искать введённое слово в буфере..

Вот заливаю свой FASM v1.67.26 в файлообменник (571Kb): http://lorinz.ru/698/
На мой взгляд это самая/стабильная версия из всех.
Можно кодить на нём под любую платформу: DOS/WIN/LINUX/MAC и т.д.
Внутри имеется справка на русском.
Ну и пару ссылок по фасму для ознакомления..

http://asm-book.ru/
http://flatassembler.narod.ru/fasm.htm
http://asmworld.ru/category/uchebnyj-kurs/page/4/


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#21 07-02-2017 14:46:26

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур,добрый день! Пришлось сделать перерыв, в связи с операцией по удалению желчного пузыря.
Большое спасибо за FASM v1.67.26 и очень полезные ссылки, по этой теме,я всё просмотрел и параллельно с TASM
начну постепенно изучать и практиковаться на практических задачах.
Хотел бы получить Совет от тебя: при включении DOS и отладчика TASM замедляется работа компьютера,некоторые процессы через Диспетчера задач можно отключить,такие как torrent,сократить количество окон Opera я знаю,а вот другие процессы боюсь трогать и даст ли это какое-то улучшение?Высылаю снимки диспетчера задач и параметры своего компьютера,через электронную почту. 
Высылаю программу по решению небольшой задачи арифметической.Она вроде и простая и решил её двумя способами, а уверенности в правильности решения нет.Может не правильно составил программу? Посмотри,пожалуйста,когда будет время.Для наглядности трассировки составил такую форму,чтобы понятней было
показать Тебе. 
          1) Решение через TASM

Код:

.Model Tiny 
.Code 
                org     100h 
start: 
xor    ax, ax 
xor    bx, bx 
xor    dx, dx 
 
mov    al, c 
mov    bl, d 
add    ax, bx    ; ax = c + d 
mov    bx, ax 
mul    bx    
mov    bx, ax  ; bx = (c + d)^2 
 
mov    al, b 
mul    b 
mul    b 
mov    cx, ax    ; cx = b ^3 

mov    al, a 
mul    a    ; ax = a ^ 2 
mul    a    ; ax = a ^ 3 
sub    ax, cx  ; ax = (a^3) - (b^3) 
 
div    bx 
 
                lea     di, dResult - 2 
                call    PrintDEC    ; Преобразование числа в символьный вид 
 
                mov     dx, offset sResult 
                mov     ah, 09h 
                int     21h         ; Печать результата на экране 
 
                int     20h         ; Завершение работы программы 
 
PrintDEC        PROC 
                std 
PH1:            xor     dx, dx      ; dx =0 чтобы избежать переполнения при 
                                    ; деление на 10 
                mov     cx, 10 
                div     cx 
                add     dl, '0'     ; преобразуем число в символьный вид 
                xchg    ax, dx 
                stosb               ; запоминаем в памяти по es:di 
                xchg    ax, dx 
                test    ax, ax      ; Пока не ноль преобразуем 
                                    ; в десятичный вид 
                jnz     PH1 
                ret 
ENDP            PrintDEC 
 
a   db      6 
b    db    4 
c    db    2 
d    db    1 
y    dw    ? 
sResult         db      'Результат равен      $' 
dResult         equ     $ 
 
end start

Код:

         ДАМП ПРОГРАММЫ 15.ASM ДО ТРАССИРОВКИ
  cs:0100►33C0           xor    ax,ax                        ▲  ax 0000   │c=0
  cs:0102 33DB           xor    bx,bx                        ■  bx 0000   │z=0
  cs:0104 33D2           xor    dx,dx                        ▒  cx 0000   │s=0
  cs:0106 A05501         mov    al,[0155]                    ▒  dx 0000   │o=0
  cs:0109 8A1E5601       mov    bl,[0156]                    ▒  si 0000   │p=0
  cs:010D 03C3           add    ax,bx                        ▒  di 0000   │a=0
  cs:010F 8BD8           mov    bx,ax                        ▒  bp 0000   │i=1
  cs:0111 F7E3           mul    bx                           ▒  sp FFFE   │d=0
  cs:0113 8BD8           mov    bx,ax                        ▒  ds 0B1D   │
  cs:0115 A05401         mov    al,[0154]                    ▒  es 0B1D   │
  cs:0118 F6265401       mul    byte ptr [0154]              ▒  ss 0B1D   │
  cs:011C F6265401       mul    byte ptr [0154]              ▒  cs 0B1D   │
  cs:0120 8BC8           mov    cx,ax                        ▒  ip 0100   │
  cs:0122 A05301         mov    al,[0153]                    ▒            │
  cs:0125 F6265301       mul    byte ptr [0153]              ▼            │
◄■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒►┼────────────┴───
  ds:0000 CD 20 FB 9F 00 9A F0 FE ═ √Я ЪЁ■                   │  ss:0000 20CD
  ds:0008 1D F0 32 0B 09 08 0F 07 ↔Ё2♂○◘☼•                   │  ss:FFFE►0000
  ds:0010 81 05 56 01 1B 04 64 05 Б♣V☺←♦d♣                   │  ss:FFFC 0000
  ds:0018 01 01 01 00 02 04 FF FF ☺☺☺ ☻♦                     │  ss:FFFA 0000
  ds:0020 FF FF FF FF FF FF FF FF                            │  ss:FFF8 0000         
  ds:0028 FF FF FF FF DE 0A 72 0E     ▐◙r♫
  ds:0030 51 09 14 00 18 00 1D 0B Q○¶ ↑ ↔♂
  ds:0038 FF FF FF FF 00 00 00 00     
  ds:0040 05 00 00 00 00 00 00 00 ♣
  ds:0048 00 00 00 00 00 00 00 00

  ds:0100 33 C0 33 DB 33 D2 A0 55 3└3█3╥аU
  ds:0108 01 8A 1E 56 01 03 C3 8B ☺К▲V☺♥├Л
  ds:0110 D8 F7 E3 8B D8 A0 54 01 ╪ўуЛ╪аT☺
  ds:0118 F6 26 54 01 F6 26 54 01 Ў&T☺Ў&T☺
  ds:0120 8B C8 A0 53 01 F6 26 53 Л╚аS☺Ў&S 
  ds:0128 01 F6 26 53 01 2B C1 F7 ☺Ў&S☺+┴ў
  ds:0130 F3 BF 7B 01 E8 09 00 BA є┐{☺ш○ ║
  ds:0138 59 01 B4 09 CD 21 CD 20 Y☺┤○═!═
  ds:0140 FD 33 D2 B9 0A 00 F7 F1 ¤3╥╣◙ ўё
  ds:0148 80 C2 30 92 AA 92 85 C0 А┬0ТкТЕ└ 
  ds:0150 75 EF C3 06 04 02 01 00 uя├♠♦☻☺
  ds:0158 00 D0 A0 D0 B5 D0 B7 D1  ╨а╨╡╨╖╤
  ds:0160 83 D0 BB D1 8C D1 82 D0 Г╨╗╤М╤В╨
  ds:0168 B0 D1 82 20 D1 80 D0 B0 ░╤В ╤А╨░
  ds:0170 D0 B2 D0 B5 D0 BD 20 20 ╨▓╨╡╨╜  
  ds:0178 20 20 20 20 24 33 C4 5E     $3─^
  ds:0180 F8 26 FF 77 04 26 FF 77 °& w♦& w
  ds:0188 02 E8 98 06 83 C4 04 EB ☻шШ♠Г─♦ы
  ds:0190 2E C4 5E F8 26 FF 77 04 .─^°& w♦
  ds:0198 26 FF 77 02 E8 9A 06 EB & w☻шЪ♠ы

    ТРАССИРОВКА ПРОГРААММЫ
  cs:0100►33C0           xor    ax,ax                ip 0100  ;обнуление регистра ax
  cs:0102►33DB           xor    bx,bx               ip 0102 z=1 p=1 ;обнуление регистра bx
  cs:0104►33D2           xor    dx,dx               ip 0104 ;обнуление регистра dx
  cs:0106►A05501         mov    al,[0155]           ip 0106 ;с адреса памяти заносим число c в младший регистр al  
    Смотрим Дамп
  ds:0150 75 EF C3 06 04 02 01 00 uя├♠♦☻☺    ;[155] значение с=02
  
  cs:0109►8A1E5601       mov    bl,[0156]           ax 0002 ;с адреса памяти заносим число d в младший регистр bl
                                                    ip 0109
  cs:010D►03C3           add    ax,bx                bx 0001 ;делаем сложение регистра ax c bx значение чисел ax=c+d
                                                    ip 010D  
  cs:010F►8BD8           mov    bx,ax               ax 0003 ;в регстр bx вводим значение регистра ax c+d
                                                    ip 010F z=0 
  cs:0111►F7E3           mul    bx                    bx 0003 ;умножение значения регистра bx на ax bx = (c + d)^2 
                                                    ip 0111 
  cs:0113►8BD8           mov    bx,ax                ax 0009    ;заносим значение регистра ax в регистр bx 
                                                    ip 0113
  cs:0115►A05401         mov    al,[0154]            bx 0009 ;с адреса памяти заносим значение b в младший регистр al
                                                    ip 0115 ;mov    al, b
  cs:0118►F6265401       mul    byte ptr [0154]        ax 0004    ;делаем умножение значение числа b 
                                                    ip 0118 ;mul    b 
  cs:011C F6265401       mul    byte ptr [0154]        ax 0010 ;делаем умножение значение числа b 
                                                    ip 011C p=0 
  cs:0120►8BC8           mov    cx,ax                ax 0040 ; cx = b ^3 
                                                    ip 0120 
  cs:0122►A05301         mov    al,[0153]            cx 0040    ;с адреса памяти заносим значение a в младший регистр al
                                                    ip 0122  
  cs:0125►F6265301       mul    byte ptr [0153]        ax 0006    ;делаем умножение на значение числа a  ax = a ^ 2 
                                                    ip 0125
  cs:0129►F6265301       mul    byte ptr [0153]     ax 0024 ;делаем умножение на значение числа a  ax = a ^ 3
                                                    ip 0129 p=1
  cs:012D►2BC1           sub    ax,cx               ax 00D8 ;делаем вычитание ax cx  ; ax = (a^3) - (b^3)  
                                                    ip 012D s=1
  cs:012F►F7F3           div    bx                  ax 0098 ;делим значение bx на ax
                                                    ip 012F s=0 p=0
  cs:0131 BF7B01         mov    di,017B             ax 0010 ;в регистр di вводим адрес результата dResult - 2 
                                                    dx 0008 
                                                    ip 0131    
  cs:0134►E80900         call   0140                di 017B    ;переход по адресу в процедуру Преобразование числа в символьный вид
                                                    ip 0134 
        Смотрим Дамп 
  ds:0150 75 EF C3 06 04 02 01 00 uя├♠♦☻☺  ;[155] значение с=02,[0156] значение d=01,[0154] значение b=04,[0153] значение a=06 

            PrintDEC        PROC процедура Преобразования числа в символьный вид                                        
  cs:0140►FD             std                        sp FFFC ; Установка флага переноса. STD.
                                                    ip 0140 
  cs:0141 33D2           xor    dx,dx                ip 0141    d=1 ;обнуление регистра dx,dx=0 чтобы избежать 
                                                            ;переполнения при делении на 10   
  cs:0143►B90A00         mov    cx,000A             dx 0000
                                                    ip 0143
  cs:0146►F7F1           div    cx                    cx 000A    
                                                    ip 0146  
  cs:0148►80C230         add    dl,30                ax 0001 ; преобразуем число в символьный вид 
                                                    dx 0006 
                                                    ip 0148    
  cs:014B►92             xchg   dx,ax                dx 0036
                                                    ip 014B z=0
  cs:014C►AA             stosb                        ax 0036    ; запоминаем в памяти по es:di 
                                                    dx 0001 
                                                    ip 014C    
  cs:014D►92             xchg   dx,ax                di 017A
                                                    ip 014D   
  cs:014E►85C0           test   ax,ax               ax 0001 ; Пока не ноль преобразуем
                                                    dx 0036 ; в десятичный вид 
                                                    ip 014E
  cs:0150►75EF           jne    0141 ↑                ip 0150    p=0    ;переход на начало процедуры            
  cs:0141 33D2           xor    dx,dx                ip 0141    ;обнуление регистра dx,dx=0 чтобы избежать 
                                                            ;переполнения при делении на 10   
  cs:0143►B90A00         mov    cx,000A             dx 0000
                                                    ip 0143 z=1 p=1
  cs:0146►F7F1           div    cx                    ip 0146    
  cs:0148►80C230         add    dl,30                ax 0000 ; преобразуем число в символьный вид 
                                                    dx 0001 
                                                    ip 0148    
  cs:014B►92             xchg   dx,ax                dx 0031
                                                    ip 014B z=0 p=0
  cs:014C►AA             stosb                        ax 0031    ; запоминаем в памяти по es:di 
                                                    dx 0000 
                                                    ip 014C    
  cs:014D►92             xchg   dx,ax                di 0179
                                                    ip 014D   
  cs:014E►85C0           test   ax,ax               ax 0000 ; Пока не ноль преобразуем
                                                    dx 0031 ; в десятичный вид 
                                                    ip 014E
  cs:0150►75EF           jne    0141                 ip 0150    p=1 z=1    ;перехода нет,переход по тексту
  cs:0152►C3             ret                        ip 0152 ;выход из процедуры
       Смотрим Дамп
  ds:0178 20 20 20 20 24 33 C4 5E     $3─^      ;до трассировки

  ds:0178 20 20 31 36 24 33 C4 5E   16$3─^  

  cs:0137►BA5901         mov    dx,0159             sp FFFE ;offset sResult y результат уравнения
                                                    ip 0137 
  cs:013A►B409           mov    ah,09                dx 0159 ;функция вывода результата на экран
                                                    ip 013A  
  cs:013C►CD21           int    21                  ax 0900 ;прерывание с выводом результата на экран
                                                    ip 013C
        Смотрим на экран
    ╨а╨╡╨╖╤Г╨╗╤М╤В╨░╤В ╤А╨░╨▓╨╡╨╜    16        (Результат равен) 16 

  cs:013E►CD20           int    20                     ax 0924
                                                     ip 013E
        Ответ:
    ╨а╨╡╨╖╤Г╨╗╤М╤В╨░╤В ╤А╨░╨▓╨╡╨╜    16        (Результат равен) 16

2) Решение через DEBUG

Код:

a  100
xor    ax,ax
xor    bx,bx
xor    dx,dx
mov    al,[0155]
mov    bl,[0156]
add    ax,bx
mov    bx,ax
mul    bx
mov    bx,ax
mov    al,[0154]
mul    byte ptr [0154]
mul    byte ptr [0154]
mov    cx,ax
mov    al,[0153]
mul    byte ptr [0153]
mul    byte ptr [0153]
sub    ax,cx
div    bx
mov    di,017B
call   0140
mov    dx,0159
mov    ah,09
int    21
int    20
std
xor    dx,dx
mov    cx,000A
div    cx
add    dl,30
xchg   dx,ax
stosb
xchg   dx,ax
test   ax,ax
jne    0141
ret

u 100 153

r
t2
e ds:0153 06 04 02 01
d ds:150 180
t
t14
t6
d ds:150 180
t9
d ds:100 180
t4
d ds:100 180



r bx
0000


r cx
0053

n c:\15.com

w

q

Код:

-a  100

0B28:0100 xor    ax,ax

0B28:0102 xor    bx,bx

0B28:0104 xor    dx,dx

0B28:0106 mov    al,[0155]

0B28:0109 mov    bl,[0156]

0B28:010D add    ax,bx

0B28:010F mov    bx,ax

0B28:0111 mul    bx

0B28:0113 mov    bx,ax

0B28:0115 mov    al,[0154]

0B28:0118 mul    byte ptr [0154]

0B28:011C mul    byte ptr [0154]

0B28:0120 mov    cx,ax

0B28:0122 mov    al,[0153]

0B28:0125 mul    byte ptr [0153]

0B28:0129 mul    byte ptr [0153]

0B28:012D sub    ax,cx

0B28:012F div    bx

0B28:0131 mov    di,017B

0B28:0134 call   0140

0B28:0137 mov    dx,0159

0B28:013A mov    ah,09

0B28:013C int    21

0B28:013E int    20

0B28:0140 std

0B28:0141 xor    dx,dx

0B28:0143 mov    cx,000A

0B28:0146 div    cx

0B28:0148 add    dl,30

0B28:014B xchg   dx,ax

0B28:014C stosb

0B28:014D xchg   dx,ax

0B28:014E test   ax,ax

0B28:0150 jne    0141

0B28:0152 ret

0B28:0153 

-u 100 153

0B28:0100 31C0          XOR    AX,AX                              
0B28:0102 31DB          XOR    BX,BX                              
0B28:0104 31D2          XOR    DX,DX                              
0B28:0106 A05501        MOV    AL,[0155]                          
0B28:0109 8A1E5601      MOV    BL,[0156]                          
0B28:010D 01D8          ADD    AX,BX                              
0B28:010F 89C3          MOV    BX,AX                              
0B28:0111 F7E3          MUL    BX                                 
0B28:0113 89C3          MOV    BX,AX                              
0B28:0115 A05401        MOV    AL,[0154]                          
0B28:0118 F6265401      MUL    BYTE PTR [0154]                    
0B28:011C F6265401      MUL    BYTE PTR [0154]                    
0B28:0120 89C1          MOV    CX,AX                              
0B28:0122 A05301        MOV    AL,[0153]                          
0B28:0125 F6265301      MUL    BYTE PTR [0153]                    
0B28:0129 F6265301      MUL    BYTE PTR [0153]                    
0B28:012D 29C8          SUB    AX,CX                              
0B28:012F F7F3          DIV    BX                                 
0B28:0131 BF7B01        MOV    DI,017B                            
0B28:0134 E80900        CALL    0140                               
0B28:0137 BA5901        MOV    DX,0159                            
0B28:013A B409          MOV    AH,09                              
0B28:013C CD21          INT    21                                 
0B28:013E CD20          INT    20                                 
0B28:0140 FD            STD                                       
0B28:0141 31D2          XOR    DX,DX                              
0B28:0143 B90A00        MOV    CX,000A                            
0B28:0146 F7F1          DIV    CX                                 
0B28:0148 80C230        ADD    DL,30                              
0B28:014B 92            XCHG    DX,AX                              
0B28:014C AA            STOSB                                       
0B28:014D 92            XCHG    DX,AX                              
0B28:014E 85C0          TEST    AX,AX                              
0B28:0150 75EF          JNZ    0141                               
0B28:0152 C3            RET                                       
0B28:0153 FEE8          JMP    FAR AL                             
-

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0100   NV UP EI PL NZ NA PO NC 
0B28:0100 31C0          XOR    AX,AX                              
-t2


AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0102   NV UP EI PL ZR NA PE NC 
0B28:0102 31DB          XOR    BX,BX                              

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0104   NV UP EI PL ZR NA PE NC 
0B28:0104 31D2          XOR    DX,DX                              
-e ds:0153 06 04 02 01

-d ds:150 180

0B28:0150  75 EF C3 06 04 02 01 5E-C9 C2 06 00 C8 06 00 00   u......^........
0B28:0160  57 56 33 F6 39 36 CE 49-75 05 33 C0 E9 D3 00 8B   WV3.96.Iu.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 6A 08 56 E8 1F   ~.9u.t..v.Wj.V..
0B28:0180  D3                                                .
-t


AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0106   NV UP EI PL ZR NA PE NC 
0B28:0106 A05501        MOV    AL,[0155]                          DS:0155=02
-t14


AX=0002  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0109   NV UP EI PL ZR NA PE NC 
0B28:0109 8A1E5601      MOV    BL,[0156]                          DS:0156=01

AX=0002  BX=0001  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=010D   NV UP EI PL ZR NA PE NC 
0B28:010D 01D8          ADD    AX,BX                              

AX=0003  BX=0001  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=010F   NV UP EI PL NZ NA PE NC 
0B28:010F 89C3          MOV    BX,AX                              

AX=0003  BX=0003  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0111   NV UP EI PL NZ NA PE NC 
0B28:0111 F7E3          MUL    BX                                 

AX=0009  BX=0003  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0113   NV UP EI PL NZ NA PE NC 
0B28:0113 89C3          MOV    BX,AX                              

AX=0009  BX=0009  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0115   NV UP EI PL NZ NA PE NC 
0B28:0115 A05401        MOV    AL,[0154]                          DS:0154=04

AX=0004  BX=0009  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0118   NV UP EI PL NZ NA PE NC 
0B28:0118 F6265401      MUL    BYTE PTR [0154]                    DS:0154=04

AX=0010  BX=0009  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=011C   NV UP EI PL NZ NA PO NC 
0B28:011C F6265401      MUL    BYTE PTR [0154]                    DS:0154=04

AX=0040  BX=0009  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0120   NV UP EI PL NZ NA PO NC 
0B28:0120 89C1          MOV    CX,AX                              

AX=0040  BX=0009  CX=0040  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0122   NV UP EI PL NZ NA PO NC 
0B28:0122 A05301        MOV    AL,[0153]                          DS:0153=06

AX=0006  BX=0009  CX=0040  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0125   NV UP EI PL NZ NA PO NC 
0B28:0125 F6265301      MUL    BYTE PTR [0153]                    DS:0153=06

AX=0024  BX=0009  CX=0040  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0129   NV UP EI PL NZ NA PE NC 
0B28:0129 F6265301      MUL    BYTE PTR [0153]                    DS:0153=06

AX=00D8  BX=0009  CX=0040  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012D   NV UP EI NG NZ NA PE NC 
0B28:012D 29C8          SUB    AX,CX                              

AX=0098  BX=0009  CX=0040  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=012F   NV UP EI PL NZ NA PO NC 
0B28:012F F7F3          DIV    BX                                 

AX=0010  BX=0009  CX=0040  DX=0008  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0131   NV UP EI PL NZ NA PO NC 
0B28:0131 BF7B01        MOV    DI,017B                            

AX=0010  BX=0009  CX=0040  DX=0008  SP=FFEE  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0134   NV UP EI PL NZ NA PO NC 
0B28:0134 E80900        CALL    0140                               

AX=0010  BX=0009  CX=0040  DX=0008  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0140   NV UP EI PL NZ NA PO NC 
0B28:0140 FD            STD                                       

AX=0010  BX=0009  CX=0040  DX=0008  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0141   NV DN EI PL NZ NA PO NC 
0B28:0141 31D2          XOR    DX,DX                              

AX=0010  BX=0009  CX=0040  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0143   NV DN EI PL ZR NA PE NC 
0B28:0143 B90A00        MOV    CX,000A                            

AX=0010  BX=0009  CX=000A  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0146   NV DN EI PL ZR NA PE NC 
0B28:0146 F7F1          DIV    CX                                 
-t6


AX=0001  BX=0009  CX=000A  DX=0006  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0148   NV DN EI PL ZR NA PE NC 
0B28:0148 80C230        ADD    DL,30                              

AX=0001  BX=0009  CX=000A  DX=0036  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014B   NV DN EI PL NZ NA PE NC 
0B28:014B 92            XCHG    DX,AX                              

AX=0036  BX=0009  CX=000A  DX=0001  SP=FFEC  BP=0000  SI=0000  DI=017B  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014C   NV DN EI PL NZ NA PE NC 
0B28:014C AA            STOSB                                       

AX=0036  BX=0009  CX=000A  DX=0001  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014D   NV DN EI PL NZ NA PE NC 
0B28:014D 92            XCHG    DX,AX                              

AX=0001  BX=0009  CX=000A  DX=0036  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014E   NV DN EI PL NZ NA PE NC 
0B28:014E 85C0          TEST    AX,AX                              

AX=0001  BX=0009  CX=000A  DX=0036  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV DN EI PL NZ NA PO NC 
0B28:0150 75EF          JNZ    0141                               
-d ds:150 180

0B28:0150  75 EF C3 06 04 02 01 5E-C9 C2 06 00 C8 06 00 00   u......^........
0B28:0160  57 56 33 F6 39 36 CE 49-75 05 33 C0 E9 D3 00 8B   WV3.96.Iu.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 57 36 08 56 E8 1F   ~.9u.t..v.W6.V..
0B28:0180  D3                                                .
-t9


AX=0001  BX=0009  CX=000A  DX=0036  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0141   NV DN EI PL NZ NA PO NC 
0B28:0141 31D2          XOR    DX,DX                              

AX=0001  BX=0009  CX=000A  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0143   NV DN EI PL ZR NA PE NC 
0B28:0143 B90A00        MOV    CX,000A                            

AX=0001  BX=0009  CX=000A  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0146   NV DN EI PL ZR NA PE NC 
0B28:0146 F7F1          DIV    CX                                 

AX=0000  BX=0009  CX=000A  DX=0001  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0148   NV DN EI PL ZR NA PE NC 
0B28:0148 80C230        ADD    DL,30                              

AX=0000  BX=0009  CX=000A  DX=0031  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014B   NV DN EI PL NZ NA PO NC 
0B28:014B 92            XCHG    DX,AX                              

AX=0031  BX=0009  CX=000A  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=017A  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014C   NV DN EI PL NZ NA PO NC 
0B28:014C AA            STOSB                                       

AX=0031  BX=0009  CX=000A  DX=0000  SP=FFEC  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014D   NV DN EI PL NZ NA PO NC 
0B28:014D 92            XCHG    DX,AX                              

AX=0000  BX=0009  CX=000A  DX=0031  SP=FFEC  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=014E   NV DN EI PL NZ NA PO NC 
0B28:014E 85C0          TEST    AX,AX                              

AX=0000  BX=0009  CX=000A  DX=0031  SP=FFEC  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0150   NV DN EI PL ZR NA PE NC 
0B28:0150 75EF          JNZ    0141                               
-d ds:100 180

0B28:0100  31 C0 31 DB 31 D2 A0 55-01 8A 1E 56 01 01 D8 89   1.1.1..U...V....
0B28:0110  C3 F7 E3 89 C3 A0 54 01-F6 26 54 01 F6 26 54 01   ......T..&T..&T.
0B28:0120  89 C1 A0 53 01 F6 26 53-01 F6 26 53 01 29 C8 F7   ...S..&S..&S.)..
0B28:0130  F3 BF 7B 01 E8 09 00 BA-59 01 B4 09 CD 21 CD 20   ..{.....Y....!. 
0B28:0140  FD 31 D2 B9 0A 00 F7 F1-80 C2 30 92 AA 92 85 C0   .1........0.....
0B28:0150  75 EF C3 06 04 02 01 5E-C9 C2 06 00 C8 06 00 00   u......^........
0B28:0160  57 56 33 F6 39 36 CE 49-75 05 33 C0 E9 D3 00 8B   WV3.96.Iu.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 31 36 08 56 E8 1F   ~.9u.t..v.16.V..
0B28:0180  D3                                                .
-t4


AX=0000  BX=0009  CX=000A  DX=0031  SP=FFEC  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0152   NV DN EI PL ZR NA PE NC 
0B28:0152 C3            RET                                       

AX=0000  BX=0009  CX=000A  DX=0031  SP=FFEE  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0137   NV DN EI PL ZR NA PE NC 
0B28:0137 BA5901        MOV    DX,0159                            

AX=0000  BX=0009  CX=000A  DX=0159  SP=FFEE  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013A   NV DN EI PL ZR NA PE NC 
0B28:013A B409          MOV    AH,09                              

AX=0900  BX=0009  CX=000A  DX=0159  SP=FFEE  BP=0000  SI=0000  DI=0179  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=013C   NV DN EI PL ZR NA PE NC 
0B28:013C CD21          INT    21                                 
-d ds:100 180

0B28:0100  31 C0 31 DB 31 D2 A0 55-01 8A 1E 56 01 01 D8 89   1.1.1..U...V....
0B28:0110  C3 F7 E3 89 C3 A0 54 01-F6 26 54 01 F6 26 54 01   ......T..&T..&T.
0B28:0120  89 C1 A0 53 01 F6 26 53-01 F6 26 53 01 29 C8 F7   ...S..&S..&S.)..
0B28:0130  F3 BF 7B 01 E8 09 00 BA-59 01 B4 09 CD 21 CD 20   ..{.....Y....!. 
0B28:0140  FD 31 D2 B9 0A 00 F7 F1-80 C2 30 92 AA 92 85 C0   .1........0.....
0B28:0150  75 EF C3 06 04 02 01 5E-C9 C2 06 00 C8 06 00 00   u......^........
0B28:0160  57 56 33 F6 39 36 CE 49-75 05 33 C0 E9 D3 00 8B   WV3.96.Iu.3.....
0B28:0170  7E 06 39 75 0E 74 13 FF-76 08 31 36 08 56 E8 1F   ~.9u.t..v.16.V..
0B28:0180  D3                                                .
-

-

-

-r bx

BX 0009
:0000

-

-

-r cx

CX 000A
:0053

-

-n c:\15.com

-

-w

‡ ЇЁбм 00053 Ў ©в
-

-q

Неактивен

#22 31-03-2017 13:00:32

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905 написал:

Пришлось сделать перерыв, в связи с операцией по удалению желчного пузыря.

Николай, доброе утро! ..и чтоб она было по настоящему добрым!
Жалко, что у Вас так получилось со-здоровьем. Но никто от это не застрахован. Надеюсь, что всё прошло удачно, и берегите себя.

K1905 написал:

..замедляется работа компьютера,
..а вот другие процессы боюсь трогать и даст ли это какое-то улучшение?

Скорость работы компьютера зависит как от частоты ЦП, так и от свободной памяти ОЗУ. Если последней не хватает, то система сбрасывает неиспользуемые страницы памяти - на диск, в файл подкачки ("pagefile.sys" в корне диска Ц). Эти страницы памяти валяются потом на диске "до-восстребования".

Как-только пользователю опять понадобится эта программа, то система будет вынуждена по-новой искать в физической памяти(ОЗУ) редко-используемые страницы, и освобождать их для вызываемой программы, на что требуется время. Такой круговорот будет продолжаться до тех пор, пока мы не закроем одну из программ, завершив тем-самым её процесс, и освободив физ.память(ОЗУ).

Поэтому не рекомендуется запускать много процессов при малом объёме ОЗУ.
Свежеустановленная Win-XP создает следующие процессы:
------------------------------------------------------
winlogon.exe  -  программа регистрации в системе, и сетевой DDE-агент;
explorer.exe  -  проводник;
internat.exe  -  русификатор;
svchost.exe   -  контейнер для служб и сервисов;
smss.exe      -  сервер менеджера сеансов;
csrss.exe     -  сервер подсистемы win32;
lsass.exe     -  сервер защитной подсистемы;
services.exe  -  диспетчер управления сервисами;
spolsv.exe    -  диспетчер очереди печати;
taskmgr.exe   -  диспетчер задач;
mstask.exe    -  планировщик задач;
regsvc.exe    -  удалённый реестр.

Остальные процессы в диспетчере задач могут присутствовать в зависимости от установленного в системе прикладного ПО, что делает список индивидуальным для каждой машины.

Все/консольные программы винда запускают из под виртуальной машиной(DOS) - файл NTVDM.EXE, которая безжалостно пожирает процессорное время. Под эту категорию консольных как-раз-таки и попадают ассемблер-"TASM", отладчик-"TurboDebugger" и пр. Поэтому, нет ничего удивительного, что в это время комп начинает тормозить.

K1905 написал:

Высылаю программу по решению небольшой задачи арифметической.

Насчёт задачки - решение в принципе правильное, но есть глобальные ошибки, которые нужно усвоить раз и навсегда! Это несколько правил арифметики, которые могут сыграть злую шутку в неподходящий момент:

1. При операциях сложения/умножения, всегда контролировать флаг(CF) - переполнение операндов-приёмников, т.к. действия с двумя/однобайтными значениями могут дать в результате двубайтный результат. Возведём в квадрат байт, со-значением(15h):

-------------
  xor  ax,ax       
  mov  al,15h      ; AX = 0015h  (1 байт)
  mul  al          ; AX = 01B9h  (2 байта)


2. В Вашем примере, Вы с начала обнуляете все регистры командой(XOR). Хороший старт! ..особенно если учесть, что при запуске программы в регистрах AX/CX уже валяются некоторые значения, которые кладёт туда загрузчик программ ОС. Кстати отладчик "TurboDebugger" не отображает эти значения, сбрасывая их в нуль. Зато их отображает отладчик "AVPutil". Одним словом обнулять регистры - это вери/гуд!

..но после первой арифм.операции: bx = (c + d)^2, Вы приступаете ко-второй операции и кладёте в AL значение переменной(b) не учитывая, что в AH может остаться мусор от предыдущей операции, и после возведения AL в квадрат мы можем получить совсем не то, чего ожидали.

Нужно сказать, что для обнуления регистра(AH) не обязательно применять(XOR), которая является 2-байтной инструкцией. Есть и множество других.., но из них выделяется инструкция(CBW) - Convert Byte to Word, которая занимает в памяти всего 1 байт. Достаточно просмотреть в отладчике "DEBUG":

-------------
  and  ah,0        ; AH = 0 //опкод = 80E400h = 3 байта
  xor  ah,ah       ; AH = 0 //опкод = 30E4h = 2 байта
  cbw              ; AH = 0 //опкод = 98h = 1 байт


3. Правило(3) гласит, что перед операцией деления всегда необходимо очищать место под остаток! Эта фишка настолько коварна, что доставляет больше всех проблем невнимательным кодерам. Как правило она возбуждает ошибку под названием "Переполнение деления!". Здесь нужно помнить, что:

- а) При делении байт-на-байт, результат помещается в регистр(АХ), причём в AH будет находится остаток. Но что будет, если в это время в AH уже находится какое-нить значение, т.е. регистр занят? Проверим в отладчике, разделив 5 на 2:

-------------
C:\>debug
-a
0B19:0100   mov  ah,E8       ; AH занят!
0B19:0102   mov  al,5        ; AL = делимое
0B19:0104   mov  bl,2        ; BL = делитель
0B19:0106   div  bl          ; разделить AL на BL !
0B19:0108
-t
AX=E800  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B19  ES=0B19  SS=0B19  CS=0B19  IP=0102   NV UP EI PL NZ NA PO NC
0B19:0102 B005          MOV     AL,05
-t
AX=E805  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B19  ES=0B19  SS=0B19  CS=0B19  IP=0104   NV UP EI PL NZ NA PO NC
0B19:0104 B302          MOV     BL,02
-t
AX=E805  BX=0002  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B19  ES=0B19  SS=0B19  CS=0B19  IP=0106   NV UP EI PL NZ NA PO NC
0B19:0106 F6F3          DIV     BL
-t
Переполнение деления
C:\>

Здесь видно, что ЦП выбрасывает исключение давая нам знать, что произошла ошибка деления. Выход из этой ситуации один, который нужно взять за правило: Перед операцией деления нужно всегда обнулять (очищать) место по остаток!

Если мы делим "байт-на-байт", то нужно очищать регистр(AH), если-же делим "слово-на-слово", то обнулению подлежит регистр(DX), т.к. именно в нём и будет хранится остаток. Целое будет в АХ..

-------------
;Разделить байт-на-байт:
  mov  al,5       ; Делимое
  mov  bl,2       ; Делитель
  cbw             ; Очистить AH (можно: XOR  AH,AH)
  div  bl         ; Применить операцию деления!
                  ; Целое в AL, остаток в AH ---------

;Разделить слово-на-слово:
  mov  ax,500h    ; Делимое
  mov  bx,200h    ; Делитель
  cwd             ; Очистить DX (можно: XOR  DX,DX)
  div  bx         ; Применить операцию деления!
                  ; Целое в AX, остаток в DX ---------

Во-первом случае CBW переводится как: Convert Byte to Word.
Во-втором случае CWD переводится как: Convert Word to Dword.

Эта-же ошибка у Вас как и в основном теле программы (DIV BX), так и в процедуре (PrintDEC). Не забывайте об этой особенности операции деления, т.к. она может принести много головной боли при отладке программы. А в остальном - программа написана грамотно, и Вы идёте в правильном направлении.


Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#23 13-04-2017 02:07:43

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур добрый вечер! От тебя долго не было вестей и я потерял бдительность чаще заглядывать по этому адресу.
Большое спасибо за присланные советы по помощи в познании замедленной работе компьютера и решении задачи.
Ответы ты всегда даешь четка,понятно, доступно и подробно обьясняешь.
Сейчас, я в основном, занимаюсь в основном решением задач и примеров по тематике "массивы".Смотрю на форумах
cyberforum.ru и других чаще других тем, ты занимался этой тематикой.Вариантов по этой теме много,по этому решаю
на TASM,DEBUG и собираю образцы для практического применения по самостоятельному составлению программ.
Не могу понять,почему самых активных участников форумов,в том числе Тебя,Mikl на cyberforum.ru блокируют,не
обращая внимание на их большую работу???!!
Высылаю задачу, которую ты решал. На отладчике DEBUG она решена правильно, а на TASM нет.Начало и конец Программы подставлял самостоятельно на TASM и ответ не получен,хотя истина близка.Таксировка за три команды
до окончания обрывается,переходит на экран cmd.exe и зависает.

Код:

.model small
.386
.data
array  db   22,7,12,18,5,13,8,23,2,14
len    =    $ - array         ; длина массива = текущий адрес, минус адрес начала массива
.stack
db 255 dup(?)
.code
start:
       mov   si,0          ; SI для LODSB
       mov   cx,len           ;
       xor   bx,bx            ;
summ:  lodsb                  ;
       add   bx,ax            ; ВХ = сумма
       loop  summ             ;
 
       xchg  ax,bx            ;
       mov   bx,len           ;
       xor   dx,dx            ;
       div   bx               ;
       xchg  ax,dx            ; DX = среднее
 
       mov   cx,bx            ;
       sub   si,cx            ;
       mov   di,si            ; SI/DI = адрес массива
newAr: lodsb                  ;
       cmp   al,dl            ;
       jbe   fuck             ; пропустить, если AL меньше/равно среднего
       stosb                  ; иначе: перезапись массива значением из AL
fuck:  loop  newAr            ;
 
       xor   al,al            ; вставляем маркер конца массива
       stosb                  ;
 
       xor  ax,ax             ;
       int  16h               ;
       ret                    ;
mov ah,4Ch
mov al,00h
int 21h
end start

Код:

[b]a  000
mov    si,0040
mov    cx,000A
xor    bx,bx
lodsb
add    bx,ax
loop   0008
xchg   bx,ax
mov    bx,000A
xor    dx,dx
div    bx
xchg   dx,ax
mov    cx,bx
sub    si,cx
mov    di,si
lodsb
cmp    al,dl
jbe    0024
nop
nop
stosb
loop   001C
xor    al,al
stosb
xor    ax,ax
int    16
ret
mov    ah,4C
mov    al,00
int    21

u  000 0034


r ip
0000
r
e ds:040 16 07 0C 12 05 0D 08 17 02 0E
d ds:000 050
t5
t3
t3
t21
t3
d ds:030 070
t7
t14
t14
d ds:000 070
t5

q

ОТВЕТ: В массиве удалены элементы, меньшие среднего арифметического элементов массива 16 12 0D 17
 массива 16 12 0D 17
Смотрим ДАМП.
0B28:0040  16 07 0C 12 05 0D 08 17-02 0E 00 00 00 00 00 00
 ................ - Исходный массив
0B28:0040  16 12 0D 17 05 0D 08 17-02 0E 00 00 00 00 00 00
 - 4 отсорт.эл.массива после удаления.[/b]

Код:

-a  000

0B28:0000 mov    si,0040

0B28:0003 mov    cx,000A

0B28:0006 xor    bx,bx

0B28:0008 lodsb

0B28:0009 add    bx,ax

0B28:000B loop   0008

0B28:000D xchg   bx,ax

0B28:000E mov    bx,000A

0B28:0011 xor    dx,dx

0B28:0013 div    bx

0B28:0015 xchg   dx,ax

0B28:0016 mov    cx,bx

0B28:0018 sub    si,cx

0B28:001A mov    di,si

0B28:001C lodsb

0B28:001D cmp    al,dl

0B28:001F jbe    0024

0B28:0021 nop

0B28:0022 nop

0B28:0023 stosb

0B28:0024 loop   001C

0B28:0026 xor    al,al

0B28:0028 stosb

0B28:0029 xor    ax,ax

0B28:002B int    16

0B28:002D ret

0B28:002E mov    ah,4C

0B28:0030 mov    al,00

0B28:0032 int    21

0B28:0034 

-u  000 0034

0B28:0000 BE4000        MOV    SI,0040                            
0B28:0003 B90A00        MOV    CX,000A                            
0B28:0006 31DB          XOR    BX,BX                              
0B28:0008 AC            LODSB                                       
0B28:0009 01C3          ADD    BX,AX                              
0B28:000B E2FB          LOOP    0008                               
0B28:000D 93            XCHG    BX,AX                              
0B28:000E BB0A00        MOV    BX,000A                            
0B28:0011 31D2          XOR    DX,DX                              
0B28:0013 F7F3          DIV    BX                                 
0B28:0015 92            XCHG    DX,AX                              
0B28:0016 89D9          MOV    CX,BX                              
0B28:0018 29CE          SUB    SI,CX                              
0B28:001A 89F7          MOV    DI,SI                              
0B28:001C AC            LODSB                                       
0B28:001D 38D0          CMP    AL,DL                              
0B28:001F 7603          JBE    0024                               
0B28:0021 90            NOP                                       
0B28:0022 90            NOP                                       
0B28:0023 AA            STOSB                                       
0B28:0024 E2F6          LOOP    001C                               
0B28:0026 30C0          XOR    AL,AL                              
0B28:0028 AA            STOSB                                       
0B28:0029 31C0          XOR    AX,AX                              
0B28:002B CD16          INT    16                                 
0B28:002D C3            RET                                       
0B28:002E B44C          MOV    AH,4C                              
0B28:0030 B000          MOV    AL,00                              
0B28:0032 CD21          INT    21                                 
0B28:0034 1800          SBB    [BX+SI],AL                         
-

-

-r ip

IP 0100
:0000

-r

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0000   NV UP EI PL NZ NA PO NC 
0B28:0000 BE4000        MOV    SI,0040                            
-e ds:040 16 07 0C 12 05 0D 08 17 02 0E

-d ds:000 050

0B28:0000  BE 40 00 B9 0A 00 31 DB-AC 01 C3 E2 FB 93 BB 0A   .@....1.........
0B28:0010  00 31 D2 F7 F3 92 89 D9-29 CE 89 F7 AC 38 D0 76   .1......)....8.v
0B28:0020  03 90 90 AA E2 F6 30 C0-AA 31 C0 CD 16 C3 B4 4C   ......0..1.....L
0B28:0030  B0 00 CD 21 18 00 28 0B-FF FF FF FF 00 00 00 00   ...!..(.........
0B28:0040  16 07 0C 12 05 0D 08 17-02 0E 00 00 00 00 00 00   ................
0B28:0050  CD                                                .
-t5


AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0040  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0003   NV UP EI PL NZ NA PO NC 
0B28:0003 B90A00        MOV    CX,000A                            

AX=0000  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0040  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0006   NV UP EI PL NZ NA PO NC 
0B28:0006 31DB          XOR    BX,BX                              

AX=0000  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0040  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL ZR NA PE NC 
0B28:0008 AC            LODSB                                       

AX=0016  BX=0000  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0041  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL ZR NA PE NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0016  BX=0016  CX=000A  DX=0000  SP=FFEE  BP=0000  SI=0041  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PO NC 
0B28:000B E2FB          LOOP    0008                               
-t3


AX=0016  BX=0016  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0041  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PO NC 
0B28:0008 AC            LODSB                                       

AX=0007  BX=0016  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0042  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PO NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0007  BX=001D  CX=0009  DX=0000  SP=FFEE  BP=0000  SI=0042  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PE NC 
0B28:000B E2FB          LOOP    0008                               
-t3


AX=0007  BX=001D  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0042  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PE NC 
0B28:0008 AC            LODSB                                       

AX=000C  BX=001D  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0043  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PE NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=000C  BX=0029  CX=0008  DX=0000  SP=FFEE  BP=0000  SI=0043  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ AC PO NC 
0B28:000B E2FB          LOOP    0008                               
-t21


AX=000C  BX=0029  CX=0007  DX=0000  SP=FFEE  BP=0000  SI=0043  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ AC PO NC 
0B28:0008 AC            LODSB                                       

AX=0012  BX=0029  CX=0007  DX=0000  SP=FFEE  BP=0000  SI=0044  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ AC PO NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0012  BX=003B  CX=0007  DX=0000  SP=FFEE  BP=0000  SI=0044  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PO NC 
0B28:000B E2FB          LOOP    0008                               

AX=0012  BX=003B  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0044  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PO NC 
0B28:0008 AC            LODSB                                       

AX=0005  BX=003B  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0045  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PO NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0005  BX=0040  CX=0006  DX=0000  SP=FFEE  BP=0000  SI=0045  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ AC PO NC 
0B28:000B E2FB          LOOP    0008                               

AX=0005  BX=0040  CX=0005  DX=0000  SP=FFEE  BP=0000  SI=0045  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ AC PO NC 
0B28:0008 AC            LODSB                                       

AX=000D  BX=0040  CX=0005  DX=0000  SP=FFEE  BP=0000  SI=0046  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ AC PO NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=000D  BX=004D  CX=0005  DX=0000  SP=FFEE  BP=0000  SI=0046  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PE NC 
0B28:000B E2FB          LOOP    0008                               

AX=000D  BX=004D  CX=0004  DX=0000  SP=FFEE  BP=0000  SI=0046  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PE NC 
0B28:0008 AC            LODSB                                       

AX=0008  BX=004D  CX=0004  DX=0000  SP=FFEE  BP=0000  SI=0047  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PE NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0008  BX=0055  CX=0004  DX=0000  SP=FFEE  BP=0000  SI=0047  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ AC PE NC 
0B28:000B E2FB          LOOP    0008                               

AX=0008  BX=0055  CX=0003  DX=0000  SP=FFEE  BP=0000  SI=0047  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ AC PE NC 
0B28:0008 AC            LODSB                                       

AX=0017  BX=0055  CX=0003  DX=0000  SP=FFEE  BP=0000  SI=0048  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ AC PE NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0017  BX=006C  CX=0003  DX=0000  SP=FFEE  BP=0000  SI=0048  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PE NC 
0B28:000B E2FB          LOOP    0008                               

AX=0017  BX=006C  CX=0002  DX=0000  SP=FFEE  BP=0000  SI=0048  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PE NC 
0B28:0008 AC            LODSB                                       

AX=0002  BX=006C  CX=0002  DX=0000  SP=FFEE  BP=0000  SI=0049  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PE NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=0002  BX=006E  CX=0002  DX=0000  SP=FFEE  BP=0000  SI=0049  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ NA PO NC 
0B28:000B E2FB          LOOP    0008                               

AX=0002  BX=006E  CX=0001  DX=0000  SP=FFEE  BP=0000  SI=0049  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0008   NV UP EI PL NZ NA PO NC 
0B28:0008 AC            LODSB                                       

AX=000E  BX=006E  CX=0001  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0009   NV UP EI PL NZ NA PO NC 
0B28:0009 01C3          ADD    BX,AX                              

AX=000E  BX=007C  CX=0001  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000B   NV UP EI PL NZ AC PO NC 
0B28:000B E2FB          LOOP    0008                               

AX=000E  BX=007C  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000D   NV UP EI PL NZ AC PO NC 
0B28:000D 93            XCHG    BX,AX                              

AX=007C  BX=000E  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=000E   NV UP EI PL NZ AC PO NC 
0B28:000E BB0A00        MOV    BX,000A                            

AX=007C  BX=000A  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0011   NV UP EI PL NZ AC PO NC 
0B28:0011 31D2          XOR    DX,DX                              

AX=007C  BX=000A  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0013   NV UP EI PL ZR NA PE NC 
0B28:0013 F7F3          DIV    BX                                 

AX=000C  BX=000A  CX=0000  DX=0004  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0015   NV UP EI PL ZR NA PE NC 
0B28:0015 92            XCHG    DX,AX                              

AX=0004  BX=000A  CX=0000  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0016   NV UP EI PL ZR NA PE NC 
0B28:0016 89D9          MOV    CX,BX                              

AX=0004  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0018   NV UP EI PL ZR NA PE NC 
0B28:0018 29CE          SUB    SI,CX                              

AX=0004  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0040  DI=0000  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001A   NV UP EI PL NZ NA PO NC 
0B28:001A 89F7          MOV    DI,SI                              

AX=0004  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0040  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL NZ NA PO NC 
0B28:001C AC            LODSB                                       

AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PO NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ AC PE NC 
0B28:001F 7603          JBE    0024                               

AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0021   NV UP EI PL NZ AC PE NC 
0B28:0021 90            NOP                                       
-t3


AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ AC PE NC 
0B28:0022 90            NOP                                       

AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0040  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ AC PE NC 
0B28:0023 AA            STOSB                                       

AX=0016  BX=000A  CX=000A  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ AC PE NC 
0B28:0024 E2F6          LOOP    001C                               
-d ds:030 070

0B28:0030  B0 00 CD 21 18 00 28 0B-FF FF FF FF 00 00 00 00   ...!..(.........
0B28:0040  16 07 0C 12 05 0D 08 17-02 0E 00 00 00 00 00 00   ................
0B28:0050  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20   .!...........   
0B28:0060  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20           .....   
0B28:0070  20                                                 
-t7


AX=0016  BX=000A  CX=0009  DX=000C  SP=FFEE  BP=0000  SI=0041  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL NZ AC PE NC 
0B28:001C AC            LODSB                                       

AX=0007  BX=000A  CX=0009  DX=000C  SP=FFEE  BP=0000  SI=0042  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ AC PE NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0007  BX=000A  CX=0009  DX=000C  SP=FFEE  BP=0000  SI=0042  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI NG NZ AC PO CY 
0B28:001F 7603          JBE    0024                               

AX=0007  BX=000A  CX=0009  DX=000C  SP=FFEE  BP=0000  SI=0042  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI NG NZ AC PO CY 
0B28:0024 E2F6          LOOP    001C                               

AX=0007  BX=000A  CX=0008  DX=000C  SP=FFEE  BP=0000  SI=0042  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI NG NZ AC PO CY 
0B28:001C AC            LODSB                                       

AX=000C  BX=000A  CX=0008  DX=000C  SP=FFEE  BP=0000  SI=0043  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI NG NZ AC PO CY 
0B28:001D 38D0          CMP    AL,DL                              

AX=000C  BX=000A  CX=0008  DX=000C  SP=FFEE  BP=0000  SI=0043  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL ZR NA PE NC 
0B28:001F 7603          JBE    0024                               
-t14


AX=000C  BX=000A  CX=0008  DX=000C  SP=FFEE  BP=0000  SI=0043  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL ZR NA PE NC 
0B28:0024 E2F6          LOOP    001C                               

AX=000C  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0043  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL ZR NA PE NC 
0B28:001C AC            LODSB                                       

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL ZR NA PE NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ AC PE NC 
0B28:001F 7603          JBE    0024                               

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0021   NV UP EI PL NZ AC PE NC 
0B28:0021 90            NOP                                       

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ AC PE NC 
0B28:0022 90            NOP                                       

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0041  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ AC PE NC 
0B28:0023 AA            STOSB                                       

AX=0012  BX=000A  CX=0007  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ AC PE NC 
0B28:0024 E2F6          LOOP    001C                               

AX=0012  BX=000A  CX=0006  DX=000C  SP=FFEE  BP=0000  SI=0044  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL NZ AC PE NC 
0B28:001C AC            LODSB                                       

AX=0005  BX=000A  CX=0006  DX=000C  SP=FFEE  BP=0000  SI=0045  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ AC PE NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0005  BX=000A  CX=0006  DX=000C  SP=FFEE  BP=0000  SI=0045  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI NG NZ AC PE CY 
0B28:001F 7603          JBE    0024                               

AX=0005  BX=000A  CX=0006  DX=000C  SP=FFEE  BP=0000  SI=0045  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI NG NZ AC PE CY 
0B28:0024 E2F6          LOOP    001C                               

AX=0005  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0045  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI NG NZ AC PE CY 
0B28:001C AC            LODSB                                       

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI NG NZ AC PE CY 
0B28:001D 38D0          CMP    AL,DL                              

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PO NC 
0B28:001F 7603          JBE    0024                               

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0021   NV UP EI PL NZ NA PO NC 
0B28:0021 90            NOP                                       

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PO NC 
0B28:0022 90            NOP                                       

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0042  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ NA PO NC 
0B28:0023 AA            STOSB                                       

AX=000D  BX=000A  CX=0005  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PO NC 
0B28:0024 E2F6          LOOP    001C                               

AX=000D  BX=000A  CX=0004  DX=000C  SP=FFEE  BP=0000  SI=0046  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL NZ NA PO NC 
0B28:001C AC            LODSB                                       
-t14


AX=0008  BX=000A  CX=0004  DX=000C  SP=FFEE  BP=0000  SI=0047  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ NA PO NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0008  BX=000A  CX=0004  DX=000C  SP=FFEE  BP=0000  SI=0047  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI NG NZ AC PE CY 
0B28:001F 7603          JBE    0024                               

AX=0008  BX=000A  CX=0004  DX=000C  SP=FFEE  BP=0000  SI=0047  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI NG NZ AC PE CY 
0B28:0024 E2F6          LOOP    001C                               

AX=0008  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0047  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI NG NZ AC PE CY 
0B28:001C AC            LODSB                                       

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI NG NZ AC PE CY 
0B28:001D 38D0          CMP    AL,DL                              

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ AC PO NC 
0B28:001F 7603          JBE    0024                               

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0021   NV UP EI PL NZ AC PO NC 
0B28:0021 90            NOP                                       

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ AC PO NC 
0B28:0022 90            NOP                                       

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0043  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ AC PO NC 
0B28:0023 AA            STOSB                                       

AX=0017  BX=000A  CX=0003  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ AC PO NC 
0B28:0024 E2F6          LOOP    001C                               

AX=0017  BX=000A  CX=0002  DX=000C  SP=FFEE  BP=0000  SI=0048  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI PL NZ AC PO NC 
0B28:001C AC            LODSB                                       

AX=0002  BX=000A  CX=0002  DX=000C  SP=FFEE  BP=0000  SI=0049  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI PL NZ AC PO NC 
0B28:001D 38D0          CMP    AL,DL                              

AX=0002  BX=000A  CX=0002  DX=000C  SP=FFEE  BP=0000  SI=0049  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI NG NZ AC PE CY 
0B28:001F 7603          JBE    0024                               

AX=0002  BX=000A  CX=0002  DX=000C  SP=FFEE  BP=0000  SI=0049  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI NG NZ AC PE CY 
0B28:0024 E2F6          LOOP    001C                               

AX=0002  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=0049  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001C   NV UP EI NG NZ AC PE CY 
0B28:001C AC            LODSB                                       

AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001D   NV UP EI NG NZ AC PE CY 
0B28:001D 38D0          CMP    AL,DL                              

AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=001F   NV UP EI PL NZ NA PO NC 
0B28:001F 7603          JBE    0024                               

AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0021   NV UP EI PL NZ NA PO NC 
0B28:0021 90            NOP                                       

AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0022   NV UP EI PL NZ NA PO NC 
0B28:0022 90            NOP                                       

AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0044  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0023   NV UP EI PL NZ NA PO NC 
0B28:0023 AA            STOSB                                       
-d ds:000 070

0B28:0000  BE 40 00 B9 0A 00 31 DB-AC 01 C3 E2 FB 93 BB 0A   .@....1.........
0B28:0010  00 31 D2 F7 F3 92 89 D9-29 CE 89 F7 AC 38 D0 76   .1......)....8.v
0B28:0020  03 90 90 AA E2 F6 30 C0-AA 31 C0 CD 16 C3 B4 4C   ......0..1.....L
0B28:0030  B0 00 CD 21 18 00 28 0B-FF FF FF FF 00 00 00 00   ...!..(.........
0B28:0040  16 12 0D 17 05 0D 08 17-02 0E 00 00 00 00 00 00   ................
0B28:0050  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20   .!...........   
0B28:0060  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20           .....   
0B28:0070  20                                                 
-t5


AX=000E  BX=000A  CX=0001  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0045  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0024   NV UP EI PL NZ NA PO NC 
0B28:0024 E2F6          LOOP    001C                               

AX=000E  BX=000A  CX=0000  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0045  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0026   NV UP EI PL NZ NA PO NC 
0B28:0026 30C0          XOR    AL,AL                              

AX=0000  BX=000A  CX=0000  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0045  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0028   NV UP EI PL ZR NA PE NC 
0B28:0028 AA            STOSB                                       

AX=0000  BX=000A  CX=0000  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0046  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=0029   NV UP EI PL ZR NA PE NC 
0B28:0029 31C0          XOR    AX,AX                              

AX=0000  BX=000A  CX=0000  DX=000C  SP=FFEE  BP=0000  SI=004A  DI=0046  
DS=0B28  ES=0B28  SS=0B28  CS=0B28  IP=002B   NV UP EI PL ZR NA PE NC 
0B28:002B CD16          INT    16                                 
-

-q

Неактивен

#24 13-04-2017 17:44:42

Rumit
Мастер
Откуда: Из матки
Зарегистрирован: 18-01-2008
Сообщений: 980
Вебсайт

Re: Вопросы по теме "Исходники на ассемблере"

K1905 написал:

Высылаю задачу, которую ты решал.
На отладчике DEBUG она решена правильно, а на TASM нет.

Николай, Вы просто перевели на TASM не правильно, а точнее из COM-программы сделали EXE-программу, о чём свидетельствует модель памяти в самом-начале Вашего кода ".model SMALL". Строковые операции типа LODSB/STOSB очень ревностно к этому относятся. Смените модель памяти на "TINY" (т.е. компилируйте в *.COM) и всё будет в порядке.

Если посмотреть последний пост в родительской теме "Исходники на ассемблере", то там как-раз говорится, что инструкция LODSB читает в регистр(AL) байт из ячейки памяти, на которую указывает регистровая пара DS:SI, а STOSB наоборот пишет байт из регистра(AL) в ячейку памяти ES:DI.

Это означает, что перед тем как пользоваться этими инструкциями, мы должны соответствующим образом настроить сегментные регистры(DS/ES), а SI и DI - это просто указатели на конкретную ячейку, с которой мы хотим иметь дело (т.е. указывают на смещения в сегменте). Вспомним модель памяти DOS, в которой вся память делится на сегменты по 64Кб. Макс.объём памяти равен 1Мб, итого получаем: 1024/64=16 сегментов по 64Кб каждый.

Если мы пишем программу типа DOS-COM (модель памяти TINY), то она выполняется/загружается в 1 сегмент памяти, и соответственно не может быть больше 64Кб. Если-же наш программный код типа DOS-EXE (модель SMALL), то системный загрузчик разбивает программу на описанные в коде сегменты, и грузит каждую секцию - в свой сегмент, на которые указыват сегментные регистры.
Заголовок Вашей EXE-программы:

Код:

.model small              ; модель памяти для DOS-EXE
.386                      ; в коде есть инструкции процессора 80386, и выше
                          ; ^^^^..старые ЦП могут их не поддерживать.
.data       ;<------------; начало секции данных. Адрес лежит в регистре DS (DataSegment). 

array  db   22,7,12,18,5,13,8,23,2,14     ; сами данные...
len    =    $ - array                     ; ///

.stack      ;<------------; начало секции стека. На него указывает SS = StackSegment
db 255 dup(?)             ; выделить для стека 255-байт!

.code       ;<------------; начало секции кода. CS = CodeSegment
start:                    ; сам код...

       mov   si,0         ; SI для LODSB.  УПС!!! LODSB читает из DS:SI.
                          ;  ..а куда сейчас указывает DS ??? Нужно выставить его на ".data"
       mov   cx,len       ;
       xor   bx,bx        ;
summ:  lodsb              ;
       add   bx,ax        ; ВХ = сумма
       loop  summ         ;

Посмотрим на сегментные регистры COM-программы, загрузив её в отладчик..
Здесь видно, что DOS загрузил нашу программу в один сегмент, на который указывают все/сегментные регистры. Значения DS/ES/SS/CS - одинаковы:

----------------------
C:\Temp>debug 02.com
-r
AX=0000  BX=0000  CX=00C9  DX=0000  SP=FFFE  BP=0000  SI=0000  DI=0000
DS=0B72  ES=0B72  SS=0B72  CS=0B72  IP=0100    NV UP EI PL NZ NA PO NC
0B72:0100 EB7C          JMP     017E
-q

Но в случае с EXE-программой картина меняется, и досовский лоадер раскромсал уже нашу программу на несколько кусочков, загрузив каждую секцию в свой сегмент. Номера сегментов памяти указываны в соответствующих регистрах:

----------------------
C:\Temp>debug 02.exe
-r
AX=0000  BX=FFFF  CX=FEE9  DX=0000  SP=1000  BP=0000  SI=0000  DI=0000
DS=0B72  ES=0B72  SS=0B8F  CS=0B82  IP=0000    NV UP EI PL NZ NA PO NC
0B82:0000 EB7C          JMP     007E
-q

Одним словом, при переводе этой программы на TASM, Вы должны или указать модель памяти "TINY" (тогда на выходе получите файл формата COM), или-же настроить сегментные регистры DS/ES на сегмент данных, как указано ниже. Тогда получите исполняемый файл в формате EXE:

Код:

.model small
.386
.stack
       db   255 dup(?)

.data 
array  db   22,7,12,18,5,13,8,23,2,14
len    =    $ - array

.code
start:
       mov   ax,@data            ;
       mov   ds,ax               ;
       mov   es,ax               ; теперь и DS и ES указываю на сегмент данных
 
       lea   si,offset array     ; DS:SI = адрес массива (для чтения LODSB'ом)
       mov   cx,len              ;
       xor   bx,bx               ;
summ:  lodsb                     ;
       add   bx,ax               ;
       loop  summ                ; ВХ = сумма элементов массива

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

http://ne-kurim.ru/ncounter/134735-4.png

Неактивен

#25 13-05-2017 01:48:05

K1905
Новичок
Зарегистрирован: 15-12-2016
Сообщений: 13

Re: Вопросы по теме "Исходники на ассемблере"

Тимур добрый вечер! Спасибо за помощь.С ответом немного задержался,дачный сезон открылся,а весна холодная,в
первые на моей памяти 10 мая выпало снега больше 10см.,с законами природы нам ещё трудно разобраться.
А теперь по теме. Я это время продолжаю заниматься решением задач по теме Массивы и подбираю для образца разные типы и разновидности по этой тематике и в основном на cyberforum.ru,где конечно очень много материала.
Но вот не могу понять,почему так много сырого материала и с ошибками,где просматривает модератор в конце каждой темы.Я это пишу не потому,что хочу кого-то обидеть или оскорбить,на что не имею на это ещё право,да ещё может где и не понимаю сам.Может в подробности Им нет возможности вникать из-за большой загруженности или на завершающем этапе решение направляется индивидуально, кто задал эту задачу,а я это не могу найти?
Вот к примеру простенькая задача.Максимальный элемент находится,а минимальный нет.

Код:

;[b]В массиве найти минимальный и максимальный элемент[/b]
StackSG segment ; Stack segment
    dw  1024    dup (?)
StackSG Ends
;=====================================
DataSG  Segment; Data segment
DataSG Ends
;=====================================
CodeSG  Segment ; Code segment
    assume  ss:StackSG,cs:CodeSG,ds:DataSG
BEGIN:    
    mov ax,DataSG
    mov ds,ax
    mas db 1,2,3,4,5
    min db ?
    max db ?
mov cx,5
lea si,mas
 
    lea si,mas
    lodsb
    mov min,al
    mov max,al
    mov cx,5
 
analiz_next:
    lodsb
    cmp al,min
    jge r1
    mov min, al
r1:
    
    jle r2
    mov max,al
r2:
loop analiz_next
lea dx,min ;виведення мінімального
mov     ah,4ch
int 21h
CodeSG  Ends
END BEGIN

Во второй задаче ,если число элемента массива 27 заменить на 13,задача просто решается,а иначе НЕТ.
25.asm

Код:

;[b]Определить максимальный и минимальный элементы массива[/b] 
data segment
MAS db 1,5,2,1,10,5,0,27,4,9
maxElem  db 13,10,'Max el vektor: $'
minElem  db 13,10,'Min el vektor: $'
min dw ?
max dw ?
data ends
 
code segment
assume ds:data,cs:code
 
 
start:
mov ax,data
mov ds,ax
 
 
mov cx,10
lea si,MAS
 
    lea si,MAS
    lodsw
    mov min,ax
    mov max,ax
    mov cx,10
 
analiz_next:
    lodsw
    cmp ax,min
    jge r1
    mov min, ax
r1:
    
    jle r2
    mov max,ax
r2:
loop analiz_next
 
lea dx,minElem  ;виведення мінімального
mov ah,9
int 21h
mov ax,min
 
lea dx,maxElem  ; виведення максимального
mov ah,9
int 21h
mov ax,max
 
 
mov ah,7 ;readln
int 21h
mov ax,4c00h
int 21h
 
code ends
end start

Представленные образцы по сортировке массива я просмотрел все,на них постоянно дается ссылка,но они громоздкие
Мне понравилась в четкости и ясности Твоя программка на cyberforum.ru,не нашел только адреса на форуме
Высылаю эту программу и таксировку с ответом
57.asm

Код:

ORG 100h
JMP start
 
mess0     DB  'RESULT: $'
massiv     DB  88,27,1,62,10,33,91,2,1,10,13,1,88,10,10,33,1,88
size     =   $ - massiv     ; длина массива
buff     DB  32 DUP(0)        ; буфер для результата
 
start:
   MOV     AH,9            ;
   MOV     DX,mess0        ;
   INT     21h            ;
   MOV     DI,buff        ; сюда будем писать
   MOV     SI,massiv        ; от сюда - читать
   MOV     DX,size        ; кол-во повторов (длина строки)
 
compare:            ;
   MOV     AH,BYTE[SI]        ; Берём число
   CALL  count_Digit        ; сколько раз оно встретилось в массиве?
   CMP     BX,3            ; проверка на 3.
   JAE     next            ; если больше/равно, то пропускаем число
   XCHG  AH,AL            ; иначе: текущее число у нас в AH
   STOSB            ; кидаем его в AL, и записываем в буфер!
next:                ;
   INC     SI            ; следующее число массива..
   DEC     DX            ; уменьшаем его длину
   OR     DX,DX            ; это последнее число в массиве?
   JNZ     compare        ; нет - мотаем цикл..
 
   MOV     CX,DI            ; Отсеянные числа у нас в буфере.
   SUB     CX,buff        ; СХ = его длина
   MOV     SI,buff        ; травим SI на буфер (для LODSB)
print:                ;
   XOR     AH,AH            ; обнуляем мусор
   LODSB            ; читаем число из буфера
   MOV     BX,10            ; выводить на экран будем в DEC
   CALL  HEX2ASC        ; есть контакт!
   MOV     AL,','         ; вставим разделитель
   INT     29h            ;
   LOOP  print            ; мотаем цикл СХ-раз...
 
exit:                ;
   XOR     AX,AX            ;
   INT     16h            ;
   INT     20h            ; на выход!
 
;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн;
; Процедура:  "count_Digit" считает кол-во одинаковых символов в строке   ;
;  На входе:  АН = число/символ для поиска                                ;
;             СХ = длина строки                                           ;
;             SI = адрес строки                                           ;
; На выходе:  ВХ = количество найденых символов                           ;
;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн;
count_Digit:            ;
   PUSH  SI            ; SI нам нужен. сохраним его
   MOV     SI,massiv        ;
   MOV     CX,size        ;
   XOR     BX,BX            ; сбросим счётчик в нуль
@@1:                ;
   LODSB            ; читаем в AL из SI
   CMP     AH,AL            ;
   JNZ     @@2            ; прыг, если не совпало с фактором
   INC     BX            ; иначе: счётчик +1
@@2:                ;
   LOOP  @@1            ; обрабатываем строку до конца...
   POP     SI            ;
RET                ;
 
;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн;
;   Функция:  "HEX2ASC" выводит на экран слово в различных СС             ;
;  На входе:  АХ = число для вывода                                       ;
;             ВХ = система счисления                                      ;
;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн;
HEX2ASC:            ;
   PUSHA            ;
   MOV     BX,10            ;
   XOR     CX,CX            ;
isDiv:                ;
   XOR     DX,DX            ;
   DIV     BX            ;
   PUSH  DX            ;
   INC     CX            ;
   OR     AX,AX            ;
   JNZ     isDiv            ;
isOut:                ;
   POP     AX            ;
   CMP     AL,9            ;
   JLE     noHex            ;
   ADD     AL,7            ;
noHex:                ;
   ADD     AL,30h         ;
   INT     29h            ;
   LOOP  isOut            ;
   POPA             ;
RET                ;

Код:

            ПРОГРАММА 57.ASM до ТРАССИРОВКИ.
  cs:0100►EB3B           jmp    013D ↓                       ▲  ax 0000   │c=0
  cs:0102 52             push   dx                           ■  bx 0000   │z=0
  cs:0103 45             inc    bp                           ▒  cx 0000   │s=0
  cs:0104 53             push   bx                           ▒  dx 0000   │o=0
  cs:0105 55             push   bp                           ▒  si 0000   │p=0
  cs:0106 4C             dec    sp                           ▒  di 0000   │a=0
  cs:0107 54             push   sp                           ▒  bp 0000   │i=1
  cs:0108 3A20           cmp    ah,[bx+si]                   ▒  sp FFFE   │d=0
  cs:010A 2458           and    al,58                        ▒  ds 0B1D   │
  cs:010C 1B01           sbb    ax,[bx+di]                   ▒  es 0B1D   │
  cs:010E 3E0A21         or     ah,ds:[bx+di]                ▒  ss 0B1D   │
  cs:0111 5B             pop    bx                           ▒  cs 0B1D   │
  cs:0112 0201           add    al,[bx+di]                   ▒  ip 0100   │
  cs:0114 0A0D           or     cl,[di]                      ▒            │
  cs:0116 01580A         add    [bx+si+0A],bx                ▼            │
◄■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒►┼────────────┴───
  ds:0000 CD 20 FB 9F 00 9A F0 FE ═ √Я ЪЁ■                   │  ss:0000 20CD
  ds:0008 1D F0 32 0B 09 08 0F 07 ↔Ё2♂○◘☼•                   │  ss:FFFE►0000
  ds:0010 81 05 56 01 1B 04 64 05 Б♣V☺←♦d♣                   │  ss:FFFC 0000
  ds:0018 01 01 01 00 02 04 FF FF ☺☺☺ ☻♦                     │  ss:FFFA 0000
  ds:0020 FF FF FF FF FF FF FF FF                            │  ss:FFF8 0000

  ds:0100 EB 3B 52 45 53 55 4C 54 ы;RESULT
  ds:0108 3A 20 24 58 1B 01 3E 0A : $X←☺>◙
  ds:0110 21 5B 02 01 0A 0D 01 58 ![☻☺◙♪☺X
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X
  ds:0120 00 00 00 00 00 00 00 00  
  ds:0128 00 00 00 00 00 00 00 00
  ds:0130 00 00 00 00 00 00 00 00
  ds:0138 00 00 00 00 00 B4 09 BA      ┤○║
  ds:0140 02 01 CD 21 BF 1D 01 BE ☻☺═!┐↔☺╛
  ds:0148 0B 01 BA 12 00 8A 24 E8 ♂☺║↕ К$ш
  ds:0150 2C 00 83 FB 03 73 03 86 , Г√♥s♥Ж
  ds:0158 E0 AA 46 4A 09 D2 75 ED ркFJ○╥uэ
  ds:0160 89 F9 81 E9 1D 01 BE 1D Й∙Бщ↔☺╛↔
  ds:0168 01 30 E4 AC BB 0A 00 E8 ☺0фм╗◙ ш
  ds:0170 1F 00 B0 2C CD 29 E2 F1 ▼ ░,═)тё

        ТРАССИРОВКА ПРОГРАММЫ.
  cs:0100►EB3B           jmp    013D ↓                ip 0100 ;прыжок на адрес 013D
    ДЛЯ СОКРАЩЕНИЯ ОБЬЕМА,НЕ ПОВТОРЯЯ ВСЕ ЦИКЛЫ ТРАССИРОВКУ ПРОВОДИМ КЛАВИШЕЙ F8.
        МЕТКА start:(начало)
  cs:013D►B409           mov    ah,09                ip 013D ;фунция вывода сообщения на экран.
  cs:013F►BA0201         mov    dx,0102             ax 0900 ;адрес начала вывода сообщения
                                                    ip 013F
  cs:0142►CD21           int    21                    dx 0102    ;прерывание и вывод на экран сообщения
                                                    ip 0142 
        Смотрим на экран.
RESULT:(результат)

  cs:0144►BF1D01         mov    di,011D                ax 0924 ; сюда будем писать
                                                    ip 0144 
  cs:0147►BE0B01         mov    si,010B                di 011D    ; от сюда - читать
                                                    ip 0147 
  cs:014A►BA1200         mov    dx,0012                si 010B    ; кол-во повторов (длина строки)
                                                    ip 014A 
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                dx 0012 ; Берём число
                                                    ip 014D 
  cs:014F►E82C00         call   017E                ax 5824 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 5858 ; проверка на 3.
                                                    bx 0003
                                                    ip 0152    p=1
  cs:0155►7303           jnb    015A ↓                ip 0155    z=1 ; если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 010C ; уменьшаем его длину
                                                    ip 015B z=0
  cs:015C►09D2           or     dx,dx                dx 0011    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл..    
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 1B58 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0001 ; проверка на 3.
                                                    ip 0152    c=1 s=1
  cs:0155►7303           jnb    015A                 ip 0155    p=0 a=1 ; если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 581B ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 011E ; следующее число массива..
                                                    ip 015A  
  cs:015B►4A             dec    dx                  si 010D ; уменьшаем его длину
                                                    ip 015B s=0 a=0
                                                    ip 015A 
        Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки

  ds:0118 0A 0A 21 01 58 1B 00 00 ◙◙!☺X←   ; после выполнения команды dec    dx 
                                                      
  cs:015C►09D2           or     dx,dx                dx 0010    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл..
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 011B ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0158 ; проверка на 3.
                                                    bx 0004    
                                                    ip 0152 c=1 s=1 p=1 a=1
  cs:0155►7303           jnb    015A ↓              ip 0155    c=0 s=0 p=0 a=0 ; если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 010E ; уменьшаем его длину
                                                    ip 015B 
  cs:015C►09D2           or     dx,dx                dx 000F    ; это последнее число в массиве?
                                                    ip 015C p=1 a=1
  cs:015E►75ED           jne    014D ↑                ip 015E a=0;JNZ     compare        ; нет - мотаем цикл..
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 3E58 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0001 ; проверка на 3.
                                                    ip 0152    c=1 s=1 p=0
  cs:0155►7303           jnb    015A                ip 0155    a=1 ; если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 583E ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159  
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 011F ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 010F ; уменьшаем его длину
                                                    ip 015B a=0 s=0 p=1
        Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки

  ds:0118 0A 0A 21 01 58 1B 3E 00 ◙◙!☺X←>  ; после выполнения команды dec    dx 
  
  cs:015C►09D2           or     dx,dx                dx 000E    ; это последнее число в массиве?
                                                    ip 015C p=0
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл..  
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0A3E ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0A58 ; проверка на 3.
                                                    bx 0004    
                                                    ip 0152 c=1 s=1 p=1
  cs:0155►7303           jnb    015A ↓              ip 0155    c=0 s=0 p=0; если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0110 ; уменьшаем его длину
                                                    ip 015B a=1
  cs:015C►09D2           or     dx,dx                dx 000D    ; это последнее число в массиве?
                                                    ip 015C a=0
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.. 
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 2158 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0002 ; проверка на 3.
                                                    ip 0152 c=1 s=1 p=1 a=1
  cs:0155►7303           jnb    015A                ip 0155    ; если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 5821 ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159    
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 0120 ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 0111 ; уменьшаем его длину
                                                    ip 015B a=0 s=0
       Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки

  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  
  cs:015C►09D2           or     dx,dx                dx 000C    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл..
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 5B21 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 5B58 ; проверка на 3.
                                                    bx 0001
                                                    ip 0152 
  cs:0155►7303           jnb    015A                ip 0155 c=1 s=1 p=0 a=1    ; если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 585B ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159    
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 0121 ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 0112 ; уменьшаем его длину
                                                    ip 015B a=0 s=0 p=1
       Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки
  ds:0120 00 00 00 00 00 00 00 00  
  
  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  ds:0120 5B 00 00 00 00 00 00 00 [
  
  cs:015C►09D2           or     dx,dx                dx 000B    ; это последнее число в массиве?
                                                    ip 015C p=0
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл. 
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 025B ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0258 ; проверка на 3.
                                                    ip 0152 c=1 s=1 p=1 a=1
  cs:0155►7303           jnb    015A                ip 0155 p=0    ; если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 5802 ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159    
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 0122 ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 0113 ; уменьшаем его длину
                                                    ip 015B a=0 s=0 
       Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки
  ds:0120 00 00 00 00 00 00 00 00  
  
  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  ds:0120 5B 02 00 00 00 00 00 00 [☻
  
  cs:015C►09D2           or     dx,dx                dx 000A    ; это последнее число в массиве?
                                                    ip 015C p=1
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл.
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0102 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0158 ; проверка на 3.
                                                    bx 0004
                                                    ip 0152 c=1 s=1 a=1
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 a=0 p=0    ; если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0114 ; уменьшаем его длину
                                                    ip 015B p=1 
  cs:015C►09D2           or     dx,dx                dx 0009    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.  
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0A58 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ip 0152 c=1 s=1  ; проверка на 3.
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 p=0    ; если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0115 ; уменьшаем его длину
                                                    ip 015B  
  cs:015C►09D2           or     dx,dx                dx 0008    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0D58 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0001   ; проверка на 3.
                                                    ip 0152 c=1 s=1; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A                ip 0155 a=1
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 580D ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159      
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 0123 ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 0116 ; уменьшаем его длину
                                                    ip 015B a=0 s=0 
       Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки
  ds:0120 00 00 00 00 00 00 00 00  
  
  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  ds:0120 5B 02 0D 00 00 00 00 00 [☻♪
  
  cs:015C►09D2           or     dx,dx                dx 0007    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл.  
        Метка compare:(для сравнения)
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 010D ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0158   ; проверка на 3.
                                                    bx 0004
                                                    ip 0152 c=1 s=1 p=1 a=1 ; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 p=0 a=0
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0117 ; уменьшаем его длину
                                                    ip 015B p=1 
  cs:015C►09D2           or     dx,dx                dx 0006    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.    
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 5858 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0003   ; проверка на 3.
                                                    ip 0152 ; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 z=1
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0118 ; уменьшаем его длину
                                                    ip 015B z=0 
  cs:015C►09D2           or     dx,dx                dx 0005    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.  
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0A58 ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0004   ; проверка на 3.
                                                    ip 0152 c=1 s=1; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 p=0
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 0119 ; уменьшаем его длину
                                                    ip 015B  
  cs:015C►09D2           or     dx,dx                dx 0004    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл.
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ip 014F  ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                              ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ip 0152 c=1 s=1 p=1 ; проверка на 3.
                                                            ; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 p=0
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 011A ; уменьшаем его длину
                                                    ip 015B  
  cs:015C►09D2           or     dx,dx                dx 0003    ; это последнее число в массиве?
                                                    ip 015C P=1 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл. 
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 2158  ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F  ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0002  ; проверка на 3.
                                                    ip 0152 c=1 s=1 a=1 ; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A                ip 0155  ;если больше/равно, то пропускаем число
  cs:0157►86E0           xchg   al,ah               ip 0157 ; иначе: текущее число у нас в AH
  cs:0159►AA             stosb                      ax 5821 ; кидаем его в AL, и записываем в буфер!
                                                    ip 0159      
        Метка next:(следующий)
  cs:015A►46             inc    si                  di 0124 ; следующее число массива..
                                                    ip 015A
  cs:015B►4A             dec    dx                  si 011B ; уменьшаем его длину
                                                    ip 015B a=0 s=0 
       Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки
  ds:0120 00 00 00 00 00 00 00 00  
  
  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  ds:0120 5B 02 0D 21 00 00 00 00 [☻♪!
  
  cs:015C►09D2           or     dx,dx                dx 0002    ; это последнее число в массиве?
                                                    ip 015C p=0
  cs:015E►75ED           jne    014D ↑                ip 015E c=0;JNZ     compare        ; нет - мотаем цикл.
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 0121  ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F  ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                ax 0158  ; проверка на 3.
                                                    bx 0004 
                                                    ip 0152 c=1 s=1 p=1 a=1 ; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 c=0 s=0 p=0 a=0 ;если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 011C ; уменьшаем его длину
                                                    ip 015B 
  cs:015C►09D2           or     dx,dx                dx 0001    ; это последнее число в массиве?
                                                    ip 015C 
  cs:015E►75ED           jne    014D ↑                ip 015E ;JNZ     compare        ; нет - мотаем цикл. 
  cs:014D►8A24           mov    ah,[si]                ip 014D ; Берём число
  cs:014F►E82C00         call   017E                ax 5858  ;CALL  count_Digit        ; сколько раз оно встретилось 
                                                    ip 014F  ;в массиве?
  cs:0152►83FB03         cmp    bx,0003                bx 0003  ; проверка на 3.
                                                    ip 0152  p=1; если больше/равно, то пропускаем число
  cs:0155►7303           jnb    015A ↓              ip 0155 z=1;если больше/равно, то пропускаем число
        Метка next:(следующий)
  cs:015A►46             inc    si                  ip 015A ; следующее число массива..
  cs:015B►4A             dec    dx                  si 011D ; уменьшаем его длину
                                                    ip 015B z=0
  cs:015C►09D2           or     dx,dx                dx 0000    ; это последнее число в массиве?
                                                    ip 015C z=1
  cs:015E►75ED           jne    014D                 ip 015E ;JNZ     compare        ; нет - мотаем цикл. 
  cs:0160►89F9           mov    cx,di               ip 0160 ; Отсеянные числа у нас в буфере.
  cs:0162►81E91D01       sub    cx,011D             cx 0124 ; СХ = его длина
                                                    ip 0162 
  cs:0166►BE1D01         mov    si,011D                cx 0007 ;MOV     SI,buff        ; травим SI на буфер (для LODSB)
                                                    ip 0166 z=0 p=0 a=1
        Метка print:(распечатать)    
  cs:0169►30E4           xor    ah,ah                ip 0169 ; обнуляем мусор
  cs:016B►AC             lodsb                      ax 0058 ; читаем число из буфера
                                                    ip 016B z=1 p=1 a=0
  cs:016C►BB0A00         mov    bx,000A                ax 001B ; выводить на экран будем в DEC
                                                    si 011E 
                                                    ip 016C    
  cs:016F►E81F00         call   0191                bx 000A    ; есть контакт! перехода нет по тексту
                                                    ip 016F  
  cs:0172►B02C           mov    al,2C                ip 0172 z=0 p=0 ; вставим разделитель MOV     AL,',' запятую
  cs:0174►CD29           int    29                  ax 002C ;прерывание с выводом на экран запятой
                                                    ip 0174 
    Смотрим на экран 
RESULT: 27,                          ;выведено первое число неповторяющщееся более 3 раз с запятой

  cs:0176►E2F1           loop   0169 ↑                ip 0176 ;LOOP  print            ; мотаем цикл СХ-раз...
  cs:0178►31C0           xor    ax,ax               cx 0000
                                                    si 0124
                                                    ip 0178 p=1 
    Cмотрим на экран                                                 
RESULT: 27,62,33,91,2,13,33,        ;выведены все числа  неповторяющщееся более 3 раз с разделителем между ними запятой    

  cs:017A►CD16           int    16                    ax 0000    ;прервание нажми любую клавишу
                                                    ip 017A z=1
1832:017C CD20           int    20                    ip 0000 z=0 p=0 i=0 ;выход с программы с переходом в DS                                
  
ОТВЕТ: ;выведены из массива все числа  неповторяющ.более 3 раз с разделителем между ними запятой 27,62,33,91,2,13,33

    Cмотрим на экран
RESULT: 27,62,33,91,2,13,33,    

    Смотрим Дамп
  ds:0118 0A 0A 21 01 58 00 00 00 ◙◙!☺X    ;до трассировки
  ds:0120 00 00 00 00 00 00 00 00  
  
  ds:0118 0A 0A 21 01 58 1B 3E 21 ◙◙!☺X←>! ; после выполнения команды dec    dx 
  ds:0120 5B 02 0D 21 00 00 00 00 [☻♪!

Неактивен


Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Рейтинг@Mail.ru