Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » [2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП

[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи), страница 14

PDF-файл [2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи), страница 14 Системное программирование (17501): Другое - 4 семестр[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи) - PDF, страница 14 (17501) - СтудИзба2018-01-09СтудИзба

Описание файла

Файл "[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП" внутри архива находится в папке "Всякие мелочи". PDF-файл из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "системное программирование" в общих файлах.

Просмотр PDF-файла онлайн

Текст 14 страницы из PDF

Завершение цикла повторений происходит при достижении значения истины любого из условий (в счетчике СХ 0 или достигнут конец строки).Ниже приводиться пример использования команды пересылки цепочки символов.Исходные строки в программе описаны так:STRINGS dbSTRINGD db'1234567890'$',0$',0Для пересылки данных используется следующий фрагмент:CLDPUSH DSPOP ESLEA DI,STRINGDLEA SI,STRINGSMOV CX, 10; Команда MOVSBREPMOVSB; Сброс флага направления;;;;Обязательная загрузка ESзагрузка адреса приемниказагрузка адреса источникаМаксимальное число повторенийВ программе первоначально устанавливается в 0 флаг направления.

Далее формируетсязначение сегментного регистра ES. В нашем случае пересылка выполняется в пределаходного сегмента, поэтому ES = DS. В принципе значение регистра ES может быть любым, то есть пересылка может быть между сегментами. Далее с помощью команды LEAформируются начальные адреса - смещения источника (SI) и приемника (DI) и заполняется число циклов CX=10. В нашем случае нулевой символ в строке находится на 14-й позиции, поэтому первым сработает счетчик на регистре CX. Если вывести исходные данные в отладчике QC25, то увидим:&StringS,s Œ "1234567890&StringD,s Œ "$"$"Отладчик заканчивает вывод по нулевому символу. После работы программы получим:&StringS,s Œ "1234567890&StringD,s Œ "1234567890$"$"Было скопировано ровно 10 байт. Если установить счетчик циклов СХ = 15, то получим:&StringS,s Œ "1234567890&StringD,s Œ "1234567890…MOV CX, 15…$"$"В этом случае циклы будут завершены по условию конца строки в источнике (14 символравен 0).

Если СХ = 3, то получим:&StringS,s Œ "1234567890&StringD,s Œ "123…MOV CX, 15…$"$"Если признак направления установлен в 1 (командой STD), то при пересылке цепочки регистры DI и SI на каждом шаге будут уменьшаться. Пусть исходные строки дляперемещения имеют вид:STRINGS dbSTRINGD db'1234567890$',0'$',0Тогда можно выполнить следующий фрагмент программы:;MOVSBбайты обратное направление STDSTD; Направление STRINGS => STRINGDLEA DI, STRINGD + 9LEA SI, STRINGS + 9MOV CX, 8REPMOVSBТак как установлен признак направления в 1 (STD) перемещение будет выполняться смладших байтов цепочки. Результат будет таким:&STRINGS,s Œ "1234567890$"2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”&STRINGD,s Œ " 34567890$"64Если префикс REP перед командой MOVSB отсутствует, то команда будет выполненаодин раз. Например:CLD…MOV CX, 10; Если REP нет, то 1 разMOVSBРезультат будет таким:&STRINGS,s Œ "1234567890&STRINGD,s Œ "1$"$"Даже при установке регистра СХ в 10.

Для управления командой MOVSB могут использоваться и другие префиксы: REPE/REPNE и REPZ/REPNZ. Эти признаки ориентируютсяна значения передаваемых данных и для команды MOVS не действуют.Команда COMPSB и ее разновидности используется для сравнения цепочек байтовых чисел. Синтаксис команды:COMPSB <приемник> , <источник>ИлиCOMPSBПусть мы имеем описание двух строк, которые равны:StrsStrddbdbdbdb…'123$'0'123$0'Тогда, после выполнения фрагмента программы:; Команда CMPSBPUSH DSPOP ESCLDLEA DI, StrdLEA SI, StrsMOV CX, 10REPCMPSBJE M5XOR AX,AXM5:; Обязательная загрузка ESБудет выполнен переход на метку M5, так как будут сравниваться строки до появления висходной строке нулевого символа.

Если мы специально нарушим равенство строк, какэто сделано в следующем фрагменте:; CMPSBREPCLDLEA DI, StrdLEA SI, StrsMOV Strd + 1 ,'*'MOV CX, 10REPCMPSBJE M6XOR AX,AXM6:то переход на метку M6 не произойдет. При использовании префикса REPNE процесспроверки остановиться на первом отличном символе:; CMPSB REPNECLDLEA DI, StrdLEA SI, StrsMOV Strd + 1 ,'*'2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”MOV CX, 10REPNECMPSBJNE M61XOR AX,AXM61:65в регистре СХ мы получим значение 9, которое показывает, что в строках равны толькопервые символы (10 - 9).

После восстановления строки (возвращаем ‘2’ на место) припрефиксе REPE ( проверка эквивалентности строк) получим переход на метку М62:; CMPSB REPECLDLEA DI, StrdLEA SI, StrsMOV Strd + 1 ,'2'MOV CX, 10REPECMPSBJE M62XOR AX,AXM62:Команда SCASB и ее разновидности используется для поиска в цепочке значенияпомещенного в регистре AL(AX). Синтаксис команды:SCASB <приемник>ИлиSCASBПри поиске символа или числа (SCASW) в регистр AL (AX) предварительно заносим значение для поиска и выполняем команду с префиксом повторения:; SCASBREPCLDLEA DI, StrdMOV CX, 10MOV AL, '2'MOV CX , 10REPSCASBПосле ее выполнения в регистре DI получим адрес найденного символа. Для следующейпрограммы с префиксом REPNE:; SCASBREPNECLDLEA DI, StrdMOV CX, 10MOV AL, '3'MOV CX , 10REPNESCASBВ DI получим значение адреса символа следующего после ‘3’.; SCASBREPECLDLEA DI, StrdMOV AL, '2'MOV CX , 10REPESCASBПри использовании REPE также в регистре DI получим адрес найденного символа.Команда LODSB и ее разновидности используется для загрузки в AL(AX) значенияиз цепочки символов.

Синтаксис команды:LODSB <источник>ИлиLODSB; LODSCLD662009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”LEA SI, StrsLODSB; Загрузка 1-го байта строки в AL…LODSB; Загрузка 2-го байта строки в ALТакие команды можно использовать в цикле для последовательной обработки отдельныхсимволов (можно с успехом применить в 5-й ЛР) для обработки введенной строки.Команда STOSB и ее разновидности используется для записи в цепочку значенияиз AL(AX). Синтаксис команды:STOSB <приемник>ИлиSTOSBПример фрагмента программы с повторением для записи в строку:; STOSBCLDLEA DI, StrdMOV AL , '#'MOV CX, 4REPSTOSBПосле выполнения данного фрагмента в строке Strd мы получим:&Strd,s Œ ”####”Такие команды можно использовать в цикле для последовательной обработки отдельныхсимволов (можно с успехом применить в 5-й ЛР) для запоминания строки.15.3.

MUL/IMUL и DIV/IDIVКоманды MUL/IMUL и DIV/IDIV используются для выполнения операций умножения и деления целых чисел. Особенностью команды умножения является то, что полученный результат может иметь двойную размерность (8 - > 16 и 16 -> 32). Особенностьюкоманды деления является наличие двух результатов (частного и остатка). Это влияет навыполнение команд, в частности на использование регистров. Парные командыMUL/IMUL и DIV/IDIV отличаются учетом (IMUL, IDIV) или не учетом (MUL, DIV) знаков чисел при выполнении операций. Для примеров программ выполнения операций намнужны следующие описания:WORD1BYTE1REZREZOREZDDWDBDWDWDD100100000Команда для умножения MUL слов (16 бит)без учета знака имеет вид:; Тест командыMOV AX ,MOV BX ,MUL BXMOV WORDMOV WORDMUL10001000( слова); умножениеPTR REZD , AXPTR REZD+2 , DXРезультат операции получается на двух регистрах: в AX – младшие байты, а на DX –старшие байты.

Напомню, что в оперативной памяти они записаны в обратном порядке!Результат получается в виде:REZD,d Œ 1000000Умножение слов можно выполнить с использованием переменной из памяти:; Память WORDMOV AX , 1000MUL WORD1; 100MOV WORD PTR REZD , AX2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”MOV WORD PTR REZD+2 , DX67Результат получается в виде:REZD,d Œ 1000000При умножении на байтовую переменную в регистре (BL) результат должен поместитьсяв регистр слова (AX), при этом множимое расположено в регистре AL:; умножение на регистр BLXOR AX,AXMOV AL , 200MOV BL , 200MUL BLMOV REZ , AXРезультат получается в виде:REZ,u Œ 40000Если после выполнения операции старший регистр не нулевой (AH != 0), то формируютсяфлаги OF (переполнения) и CF (переноса). Значения этих флагов можно использовать вкомандах условной передачи управления.

Можно умножать на байт из памяти, например:; ПамятьMOVMULMOVBYTEAL , 200BYTE1; 100REZ , AXРезультат получается в виде:REZ,u Œ 20000Если при умножении важен знак, то нужно использовать команду IMUL. Например:;IMULсо знакомMOV AX , -100IMUL WORD1; 100MOV REZ , AXРезультат получается в виде:REZ,d Œ -10000При знаковом умножении слов;IMUL словаMOV AX , -1000IMUL WORD1; 100MOV WORD PTR REZD , AXMOV WORD PTR REZD+2 , DXРезультат получается на регистрах AX:DX в виде:REZD,d Œ -100000Команда деления может выполняться без учета знака (DIV) и с учетом знака(IDIV).

При операции короткого деления делимое располагается на регистре AX (16 бит),а делитель на заданном регистре размером 8 бит (в примере BL) или в памяти. Результатполучаем в регистрах AL(частное) и AH(остаток). В примере ниже:; DIVкороткоеMOV AX , 105MOV BL, 10DIV BLMOV REZCH , ALMOV REZOC , AHПолучим результат:REZCH,u Œ 10REZOC,u Œ 5При операции длинного деления делимое располагается на регистрах AX:DX (32бит), а делитель на заданном регистре размером 16бит (в примере BX). Результат получаем в регистрах AX(частное) и DX(остаток). В примере ниже:; DIVдлинноеMOV AX , WORD PTR REZD; 100005 - DD2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”MOV DX , WORD PTR REZD+2MOV WORD PTR REZD , AXMOV WORD PTR REZD+2 , DXMOV BX, 100DIV BXMOV REZOCD , DXMOV REZCHD , AX68Получим результат:REZCHD,u Œ 1000REZOCD,u Œ 5Операции деления выполняются и над знаковыми числами (IDIV), при этом знакустанавливается у частного.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
420
Средний доход
с одного платного файла
Обучение Подробнее