adfun.ru
 
BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Турбо Ассемблер 3.0/tasm/#2-2
Автор ""
Размер 465209 Байт
Страница 35 из 54
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

                                           ; будет выполнено
                    mov   ds,dx
                    pop   bp
                    ret   6                ; параметры занимают
                                           ; 6 байт
     HexStr         ENDP
     CODE           ENDS
                    END

          Пример  программы  на  Паскале,  где  используется   функция
     HexStr, имеет следующий вид:

          Program HexTest;
          var
            num : word;

     Турбо Ассемблер 3.0/tasm/#2-2                             = 137 =

          {$F+}

          function HexStr(var num; byteCount : byte) : string;
                                                        external;

          {$L HEXSTR.OBJ}

          {$F-}
          begin
            num := word;
            Writeln('Преобразованная строка имеет шестнадцатиричное
          представление: ', HexStr(num,Sizeof(num)),'*');
          end.

          Для построения и запуска  примеров  программы на  Паскале  и
     программы  Ассемблера  используйте  следующие  команды командного
     файла:

          TASM HEXSTR
          TPC HEXTEST
          HEXTEST

          Если вы используете директиву .MODEL,  то  программу  HexStr
     можно записать следующим образом (файл HEXMOD.ASM):

                    .MODEL   large, PASCAL
                    .CODE
     HexStr PROC FAR num:DWORD,byteCount:BYTE RETURNS resultPtr:DWORD
                    PUBLIC HexStr
                    les   di,resultPtr     ; получить адрес
                                           ; результата функции
                    mov   dx,ds            ; сохранить DS Турбо
                                           ; Паскаля в DX
                    lds   si,sum           ; получить адрес числа
                    mov   al,byteCount     ; сколько байт?
                    xor   ah,ah            ; слово
                    mov   cx,ax            ; отслеживать число
                                           ; байт в CX
                    add   si,ax            ; начать со старшего
                                           ; байта числа
                    dec   si
                    shl   ax,1             ; сколько цифр?
                                           ; (2/байт)
                    cld                    ; сохранить число цифр
                                           ; (работать в прямом
                                           ; направлении)
                    stosb                  ; в приемнике - байт
                                           ; длины строки
     NextLoop:
                    std                    ; сканировать число от
                                           ; старшего байта к
                                           ; младшему
                    lodsb                  ; получить следующий

     Турбо Ассемблер 3.0/tasm/#2-2                             = 138 =

                                           ; байт
                    mov   ah,al            ; сохранить его
                    shr   al,1             ; выделить старшую
                                           ; группу бит
                    shr   al,1
                    shr   al,1
                    shr   al,1
                    add   al,90h           ; специальная после-
                                           ; довательность шестнад-
                                           ; тиричного преобразования
                    daa                    ; использование инструкций
                                           ; ADD и DAA
                    adc   al,40h
                    daa                    ; группа преобразована
                                           ; в код ASCII
                    cld                    ; сохраним ASCII и следуем
                                           ; далее
                    stosb
                    mov   al,ah            ; повторить преобразование
                                           ; для младшей группы
                    and   al,0Fh
                    add   al,90h
                    daa





adc al,40h daa stosb loop HexLoop ; продолжать, пока не ; будет выполнено mov ds,dx ; восстановить DS ; Турбо Паскаля ret HexStr ENDP CODE ENDS END При этом вы можете использовать ту же программу на Паскале и просто ассемблировать альтернативный вариант HexStr и перекомпи- лировать программу с помощью того же командного файла. Пример обмена содержимого двух переменных ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД С помощью данной процедуры (VAREXCH.ASM) вы можете выполнить обмен содержимого двух переменных размера count. Если count имеет значение 0, то то процессор попытается перекопировать 64К. CODE SEGMENT ASSUME cs:CODE,ds:NOTHING ; Параметры (заметим, что из-за push bp смещение ; увеличивается на 2) var1 equ DWORD PTR ss:[bp+12] Турбо Ассемблер 3.0/tasm/#2-2 = 139 = var2 equ DWORD PTR ss:[bp+8] count equ WORD PTR ss:[bp+6] Exchange PROC FAR PUBLIC Exchange cld ; обмен в прямом направлении mov dx,ds ; сохранить регистр DS push bp mov bp,sp ; получить базу стека lds si,var1 ; получить первый адрес les di,var2 ; получить второй адрес mov cx,count ; получить число перемещаемых ; байт shr cx,1 ; получить счетчик слов ; (младший бит -> перенос) jnc ExchangeWord ; если не нечетный байт, ; войти в цикл mov al,es:[di] ; считать нечетный байт ; из var2 movsb ; переместить байт из var1 ; в var2 mov [si-1],al ; записать var2 в var1 jz Finis ; выполнено, если нужно ; выполнить обмен только ; одного байта ExchangeWords: mov bx,-2 ; BX - это удобное место ; для хранения -2 ExchangeLoop: mov ax,es:[di] ; считать слово из var2 movsw ; переместить из var1 ; в var2 mov [bx][si,ax ; записать слово var2 в ; var1 loop ExchangeLoop ; повторить count/2 раз Finis: mov ds,dx ; получить обратно DS ; Турбо Паскаля pop bp ret 10 Exchange ENDP CODE ENDS END Программа Турбо Паскаля, которая использует функцию Exchange (файл varexch.pas), имеет вид: program TextExchange; type EmployeeRecord = record Name : string[30]; Address : string[30]; Турбо Ассемблер 3.0/tasm/#2-2 = 140 = City : string[15]; State : string[2]; Zip : string[10]; end; var OldEmployee, NewEmployee : EmployeeRecord; {$F+} procedure Exchange(var var1,var2; count : word); external; {$L XCHANGE.OBJ} {$F-} begin


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.