Главная » Просмотр файлов » assembler. Учебник для вузов_Юров В.И_2003 -637с

assembler. Учебник для вузов_Юров В.И_2003 -637с (862834), страница 29

Файл №862834 assembler. Учебник для вузов_Юров В.И_2003 -637с (Юров В.И - Assembler. Учебник для вузов. 2003) 29 страницаassembler. Учебник для вузов_Юров В.И_2003 -637с (862834) страница 292021-12-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 29)

e x e prg_6_l , , n u l ,В результате на диске будут созданы файлы prg_6_l.obj, prg_6_l.crf.Необязательный аргумент [ключи] позволяет задавать режим работы транслятора TASM. Этих ключей достаточно много, и все они описаны в приложении В(http://www.piter.com/download).Перед работой с программой tasm.exe желательно провести некоторые подготовительные операции. После установки пакета TASM в каталоге \TASM\BIN, где находится файл tasm.exe, присутствует большое количество файлов.

Можно запустить программу tasm.exe прямо отсюда, но тогда созданные ею файлы объектного кода,листинга и перекрестных ссылок тоже окажутся в этом каталоге. Если вы собираетсянаписать всего одну программу, то неудобство не столь заметно, но при работе с несколькими программами очень скоро этот каталог станет похожим на свалку. Чтобыизбежать подобной ситуации, рекомендуется выполнить описанную далее процедуру.1. Создайте в каталоге.

.\TASM вложенные каталоги . .\WORK и . .\PROGRAM. Каталог..\PROGRAM будет использоваться для хранения отлаженных кодов программи их исполняемых модулей (файлов с расширением .ехе). Каталог ..\WORK станет рабочим — в нем будут находиться необходимые для получения исполняемого модуля файлы из пакета транслятора TASM и файл исходного модуля,с которым в данный момент ведется работа. После устранения ошибок в исходном модуле его вместе с исполняемым модулем можно будет переписать в каталог . .\PROGRAM, а из каталога. .\WORK удалить все ненужные файлы, чтобы подготовить его для работы со следующим исходным модулем на ассемблере.

Такимобразом, в каталоге ..\WORK всегда будет находиться рабочая версия программы, а в каталоге ..\PROGRAM — отлаженная версия.2. Поместите в каталог ..\WORK файлы tasm.exe, tlink.exe и rtm.exe. Если в дальнейшем в каталоге ..\WORK не окажется каких-то рабочих файлов вашей программы, программы tasm.exe и tlink.exe выдадут соответствующее сообщение.3. Поместите в каталог. .\WORK файл prg_6_l.asm.После всех этих действий можно начинать работу. Для этого следует перейтив каталог ..\WORK и инициировать трансляцию программы prg_6_l.asm команднойстрокой видаtasm.exe /zi prg_6_l , , .В результате на экране появится последовательность строк. Самая первая изних будет содержать информацию о номере версии пакета TASM, который использовался для трансляции данной программы.

В следующей строке будет выведеноимя транслируемого файла. Если программа содержит ошибки, то транслятор выдаст на экран строки сообщений, начинающиеся словами «Error» и «Warning». Хотяпрограмма из листинга 6.1 синтаксически правильная, в учебных целях в нее можно внести какую-нибудь бессмыслицу и посмотреть, что получится.

Наличие строкисо словом «Error» будет говорить о том, что в программе есть недопустимые с точ-Процесс разработки программы131ки зрения синтаксиса комбинации символов. Логика работы программы для транслятора не имеет никакого значения. Можно написать абсолютную чушь, но еслиона синтаксически правильна, транслятор поспешит обрадовать пользователя, сообщив ему об отсутствии ошибок. Наличие строки «Warning» означает, что конструкция синтаксически правильна, но не соответствует некоторым соглашениямязыка, и это может служить источником ошибок в будущем.Для устранения ошибок нужно определить место их возникновения и проанализировать ситуацию. Местоположение ошибки легко определяется по значениюв скобках в сообщении об ошибке.

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

По этимсоображениям для локализации ошибок лучше использовать информацию из специального создаваемого транслятором файла листинга. Этот файл имеет расширение .1st, а его имя определяется в соответствии с рассмотренными выше соглашениями. В листинге 6.2 приведен полный формат файла листинга для программы,содержащей некоторые ошибки. Файл листинга — это всегда очень важный документ, и ему нужно уделить должное внимание.Листинг 6.2. Пример файла листингаTurbo Assembler Version 4.102/03/98 21:23:43Page 1Prg_6_l.asm1;Prg_6_l.asm2;Программа преобразования двузначного шестнадцатеричного числа3;в символьном виде в двоичное представление.4 ;Вход: исходное шестнадцатеричное число из двух цифр,5{вводится с клавиатуры.6 ;Выход: результат помещается7;в регистр al.8;9 0000data segment para public "data" ;сегмент данных10 0000 82 A2 A5 A4 A8 E2 A5+ message db "Введите две шестнадцатеричныецифры,$"111213141520ElЕ2A52CА4E2А52024А2ADЕ0E6А5АОASAS270 0 0 A C D 2120А4E7E4Е8ЕбADE0А5 +А0+EB+EB+16 0025 data ends17 0000 stk segmentstack18 0000 0100*(3F) db 256 dup ("?");сегмент стека19 0100 stkends20 0000 codesegment para public "code" ;начало сегмента кода21 0000 mainproc;начало процедуры main22 assume cs:code,ds:data,ss:stk23 0000 B8 0000s mov ax,data;адрес сегмента данных в регистре ах24 0003 8Е D8 mov ds.ax;ax в ds25 0005 В4 09 mov ah,926 0007 ВА 0000mov dx,offset messag**Error** Prg_6_l.asm(21) Undefined symbol: MESSAGi n t 21hпродолжение #132Глава 6.

Первая программаЛистинг 6.2(продолжение)28 000С 33 С0 хог ах,ахочистить регистр ах29 000Е В4 01 mov ah.lhIh в регистр ah30 0010 CD 21 int 21hгенерация прерывания с номером 21h31 0012 8A D0 mov dl.alсодержимое регистра at в регистр dl32 0014 80 EA 30 sub dl 30h;вычитание: (dl)=(dl)-30h;сравнить (dl) с 9п33 0017 80 FA 09 cmp dl,9h34 001A 7E E4 jle MM;перейти на метку Ml, если dl<9h или dl=9h**Error** Prg_6_l.asm(29) Undefined symbol: MM35 001C 80 EA 00sub dl,777h ;вычитание: (dl)=(dl)-7h"Error** Prg_6_l.asm(30) Constant too large36 001FM1:определение метки Ml37 001F Bl 04 mov cl,4h;пересылка 4h в регистр cl38 0021 D2 E2 shl dl.cl;сдвиг содержимого dl на 4 разряда влево39 0023 CD 21 int 21h;вызов прерывания с номером 21h40 0025 2С 30 sub al,30h ;вычитание: (dl)=(dl)-30h41 0027 ЗС 09 cmp al,9h ;сравнить (al) с 9h 2842 0029 7E 02 jle M2;перейти на метку М2, если al<9h или al=9h43 002В 2С 07 sub al,7h;вычитание: (al)=(al)-7h44 002DM2:определение метки М245 002D 02 D0 add dl.al;сложение: (dl)=(dl)+(al)46 002F В8 4C00mov ax,4c00h;пересылка 4c00h в регистр ах47 0032 CD 21 int 21h;вызов прерывания с номером 21п48 0034 mainendp;конец процедуры main49 0034 codeends;конец сегмента кода50 end main;конец программы с точкой входа mainTurbo Assembler Version 4.1 02/03/98 21:23:43Symbol TableSymbol Name TypeValue Cref(defined at #)??DATEPage 2Text "02/03/98"??FHENAME Text"Prg_6_l"??TIMEText"21:23:43"??VERSIONNumber 040A@CPUText0101H@CURSEG TextCODE#9 #17 #20©FILENAMETextPRG_6_l@WORDSIZEText2#9 #17 #20MlNearCODE:001F#36M2 NearCODE:002D42 #44MAINNearCODE:0000#21 50MESSAGE ByteDATA:0000 #10Groups & SegmentsBit Size Align Combine Class Cref(defined at #)CODE16 0034 ParaPublic CODE#20 22DATA16 0025 ParaPublic DATA#9 22 23STK 16 0100 ParaStack17 22Turbo Assembler Version 4.1 02/03/98 21:23:43 Page 3Error Summary**Error** Prg_6_l.asm(21) Undefined symbol: MESSAG••Error** Prg_6_l.asm(29) Undefined symbol: MM**Error** Prg_6_l.asm(30) Constant too largeФайл листинга содержит код ассемблера исходной программы, а также расширенную информацию об этом коде.

Для каждой команды ассемблера указываютсяее машинный (объектный) код и смещение в кодовом сегменте. Кроме того, в конце листинга TASM формирует таблицы с информацией о метках и сегментах, используемых в программе. Если есть ошибки или сомнительные участки кода, тоTASM включает в конец листинга сообщения о них. Если сравнить их с сообщениями, выводимыми на экран, то видно, что они совпадают. Кроме того, что оченьудобно, эти же сообщения включаются в текст листинга непосредственно послеошибочной строки.Процесс разработки программы133Строки в файле листинга имеют следующий формат:глубина_вложенности номер_строки смещение машинный_код исходный_кодДалее описано каждое из этих полей:• глубина_вложенности — уровень вложенности включаемых файлов или макрокоманд в файле.и номер_строки — номер строки в файле листинга.

Номера строк листинга используются для локализации ошибок и формирования таблицы перекрестных ссылок.ПРИМЕЧАНИЕКак уже упоминалось, номера строк листинга могут не соответствовать номерам строк в исходном файле. В добавление к сказанному ранее нужно отметить, что в ассемблере имеется директива INCLUDE,которая позволяет включить в файл строки другого файла. Нумерация при этом, как и в случае макрокоманд, будет последовательная длястрок обоих файлов. Факт вложенности кода одного файла в другойфиксируется увеличением значения поля «глубина_вложенности» наединицу.

Это замечание касается и макрокоманд.ш смещение — смещение в байтах текущей команды относительно начала сегмента кода. Это смещение называют также счетчиком адреса. Величину смещениявычисляет транслятор для адресации в сегменте кода.» машинный_код — машинное представление команды ассемблера, представленной далее в этой строке полем исходный_код.яисходи ый_код — строка кода из исходного файла.Дальнейшие действия программиста должны зависеть от характера ошибки. Помере накопления опыта ошибки будут происходить чаще всего в результате простых описок.

Характеристики

Тип файла
PDF-файл
Размер
14,34 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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