Основные сведения о листинге программы
Листинг (распечатка) программы на ассемблере используется как при создании ассемблерных программ, так и в качестве источника информации для квалифицированных программистов при отладке и оптимизации программ, написанных на языках высокого уровня. Ни один другой компилятор и его листинг не дает программисту такого количества полезной технической информации, как ассемблер. Ведь одна из основных целей использования языков высокого уровня — как раз желание избежать не очень существенных технических подробностей. Но если программист хочет разобраться с подробностями созданной программы, то большинство отладчиков могут распечатать объектный эквивалент созданной программы на языке ассемблера. Эти распечатки позволяют программисту оценить качество программы и являются весьма полезными при ее оптимизации.
Листинг состоит из 2-х частей: из листинга программы и сводной информации о сегментах и идентификаторах программы.
Листинг программы имеет три столбца, в которых отображаются команды исходной ассемблерной программы и соответствующие им объектные коды:
левый столбец содержит шестнадцатеричное значение смещения адреса команды (счетчик команд — IP) от начала сегмента;
правый столбец содержит операторы и псевдооператоры ассемблера (команды и директивы программы);
в средней части размещены коды: для сегмента стека и сегмента данных — числа, запоминаемые в соответствующих ячейках памяти; для сегмента команд это коды машинных команд МП, соответствующих операторам ассемблера.
Сводная информация о сегментах и идентификаторах дает подробную их характеристику. В конце листинга приводятся сообщения об ошибках в программе.
Листинг программы SQR.ASM.
Microsoft (R) Macro Assembler Version 5.10 3/19/04 23:44:19
SQR.ASM ; Извлечение корня квадратного
TITLE SQR.asm ; Извлечение корня квадратного
0000 stacksg segment para stack 'Stack'
; назначить область памяти для стека
0000 0020 [ dw 32 dup(32) 0020 ]
0040 stacksg ends
0000 datasg segment para 'Data'
; определить данные
0000 A2 A2 A5 A4 A8 E2 vv db 'введите аргумент n (до 64 тыс.)$'
A5 20 A0 E0 A3 E3
AC A5 AD E2 20 6E
20 28 A4 AE 20 36
34 20 E2 EB E1 2E
29 20 24
0021 0A 0D A7 AD A0 E7 viv db 10,13,'значение корня = $'
A5 AD A8 A5 20 AA
AE E0 AD EF 20 20
3D 20 24
0036 0003[ sr db 3 dup(0)
00
]
003A 0D 0A 24 db 13,10,'$'
003D 05 00 00 00 00 00 buf db 5,0,0,0,0,0,0,0
00 00
0045 0000 n dw ?
0047 0001 e dw 1
0049 0000 a dw ?
004B 0000 b dw ?
004D 0000 val dw ?
004F 0002 two dw 2
0051 datasg ends
0000 codesg segment para 'Code'
; программный сегмент
assume cs:codesg,ds:datasg,ss:stacksg
0000 begin proc far
0000 1E push ds
0001 2B C0 sub ax,ax
0003 50 push ax
0004 B8 ---- R mov ax,datasg
0007 8E D8 mov ds,ax
0009 B4 09 mov ah, 9
000B BA 0000 R mov dx,offset vv
000E CD 21 int 21h
0010 B4 0A mov ah, 0ah
0012 BA 003D R mov dx,offset buf
0015 CD 21 int 21h
0017 E8 007D R call str2bin
001A BA 0000 mov dx,0
001D A1 0045 R mov ax,n
0020 40 inc ax
0021 F7 36 004F R div two
0025 2B D2 sub dx,dx
0027 A3 0049 R mov a,ax
002A A1 0045 R iter: mov ax,n
002D F7 36 0049 R div a
0031 03 06 0049 R add ax,a
0035 BA 0000 mov dx,0
0038 F7 36 004F R div two
003C 2B D2 sub dx,dx
003E A3 004B R mov b,ax
0041 2B 06 0049 R sub ax,a
0045 3B 06 0047 R cmp ax,e
0049 76 08 jbe met
004B A1 004B R mov ax,b
004E A3 0049 R mov a,ax
0051 EB D7 jmp iter
0053 B4 09 met: mov ah,9
0055 BA 0021 R mov dx,offset viv
0058 CD 21 int 21h
005A E8 0064 R call bin2str
005D B4 09 mov ah,9
005F 8B D6 mov dx,si
0061 CD 21 int 21h
0063 CB ret
0064 bin2str proc near
0064 B9 000A mov cx,10
0067 BE 003A R mov si,offset sr+2
006A A1 004B R mov ax,b
006D 2B D2 m1: sub dx,dx
006F F7 F1 div cx
0071 80 CA 30 or dl,30h
0074 88 14 mov [si],dl
0076 4E dec si
0077 3D 0000 cmp ax,0
007A 75 F1 jne m1
007C C3 ret
007D bin2str endp
007D str2bin proc near
007D BF 0001 mov di,1
0080 B9 000A mov cx,0ah
0083 BE 003E R mov si,offset buf+1
0086 2A FF sub bh,bh
0088 8A 1E 003E R mov bl,[buf+1]
008C 8A 00 m2: mov al,[si+bx]
008E 25 000F and ax,0fh
0091 F7 E7 mul di
0093 01 06 0045 R add n ,ax
0097 8B C7 mov ax,di
0099 F7 E1 mul cx
009B 8B F8 mov di,ax
009D 4B dec bx
009E 75 EC jnz m2
00A0 C3 ret
00A1 str2bin endp
00A1 begin endp
00A1 codesg ends
end begin
Segments and Groups:
N a m e Length Align Combine Class
CODESG . . . . . . . . . 00A1 PARA NONE 'CODE'
DATASG . . . . . . . . . 0051 PARA NONE 'DATA'
STACKSG . . . . . . . . 0040 PARA STACK 'STACK'
Symbols:
N a m e Type Value Attr
A . . . . . . . . . . . L WORD 0049 DATASG
B . . . . . . . . . . . L WORD 004B DATASG
BEGIN . . . . . . . . . F PROC 0000 CODESG Length = 00A1
BIN2STR . . . . . . . . N PROC 0064 CODESG Length = 0019
BUF . . . . . . . . . . L BYTE 003D DATASG
E . . . . . . . . . . . L WORD 0047 DATASG
ITER . . . . . . . . .. L NEAR 002A CODESG
M1 . . . . . . . . . .. L NEAR 006D CODESG
M2 . . . . . . . . . .. L NEAR 008C CODESG
MET . . . . . . . . . . L NEAR 0053 CODESG
N . . . . . . . . . . . L WORD 0045 DATASG
SR . . . . . . . . . .. L BYTE 0036 DATASG Length = 0004
STR2BIN . . . . . . . . N PROC 007D CODESG Length = 0024
TWO . . . . . . . . . . L WORD 004F DATASG
VAL . . . . . . . . . . L WORD 004D DATASG
VIV . . . . . . . . . . L BYTE 0021 DATASG
VV . . . . . . . . . .. L BYTE 0000 DATASG
@CPU . . . . . . . . .. TEXT 0101h
@FILENAME . . . . . . . TEXT sqr3
@VERSION . . . . . . .. TEXT 510
95 Source Lines
95 Total Lines
28 Symbols
47690 + 382785 Bytes symbol space free
0 Warning Errors
0 Severe Errors
При ассемблировании и редактировании связей могут быть получены еще два листинга с дополнительной информацией:
карта перекрестных ссылок указывает номер строки программы, в которой определен каждый идентификатор, и номер тех строк, в которых имеются на него ссылки (этот листинг можно получить, если на запрос ассемблера о перекрестных ссылках (Cross references) ввести имя файла prog (а не Nul.CRF — по умолчанию), при этом в основном листинге программы добавится столбец с номерами строк);
карта распределения памяти содержит подробные сведения о сегментах всех блоков программы, объединяемых редактором связей LINK (листинг содержится в файле prog.map).
- Введение
- Раздел «Создание и эволюция эвм» Глава 1. Научные предпосылки создания эвм
- Управление и информация
- Информация и ее свойства
- Экономическая информация
- Три формы адекватности информации
- Меры информации
- Синтаксические меры информации
- Семантическая мера информации
- Прагматическая мера информации
- Показатели качества информации
- Репрезентативность
- Содержательность
- Достаточность
- Доступность
- Актуальность
- Своевременность
- Точность
- Достоверность
- Устойчивость
- Защищенность
- Полезность
- Информатика
- Наука информатика
- Информационные технологии
- Индустрия информатики
- Вопросы для самопроверки
- Глава 2. История создания вычислительной техники
- Механические счетные машины
- Электромеханические счетные машины
- Электронные вычислительные машины
- Вопросы для самопроверки
- Глава 3. Эволюция эвм
- Вопросы для самопроверки
- Глава 4. Основные классы вычислительных машин
- Большие компьютеры
- Серверы и рабочие станции
- Рабочие станции
- Серверы
- Малые компьютеры
- Микрокомпьютеры
- Персональные компьютеры
- Наколенные компьютеры
- Компьютеры-блокноты (ноутбуки)
- Нетбуки
- Планшетные компьютеры
- Райтеры
- Электронные книги Ридеры
- Карманные компьютеры
- Периферийные устройства кпк
- Коммуникаторы (смартфоны)
- Электронные секретари
- Электронные записные книжки
- Вычислительные системы
- Многомашинные и многопроцессорные вс
- Высокопараллельные многопроцессорные вычислительные системы
- Ассоциативные и потоковые вс
- Ассоциативные вычислительные системы
- Потоковые вычислительные системы
- Суперкомпьютеры
- Кластерные суперкомпьютеры
- Вопросы для самопроверки
- Раздел 2. «Информационно-логические основы построения эвм» Глава 5. Представление информации в эвм
- Представление чисел с фиксированной и плавающей запятой
- Алгебраическое представление двоичных чисел
- Прочие системы счисления
- Двоично-десятичная система счисления
- Шестнадцатеричная система счисления
- Выполнение арифметических операций в компьютере
- Особенности выполнения операций над числами с плавающей запятой
- Выполнение арифметических операций над числами, представленными в дополнительных кодах
- Особенности выполнения операций в обратных кодах
- Выполнение арифметических операций в шестнадцатеричной системе счисления
- Особенности представления информации в пк
- Вопросы для самопроверки
- Глава 6. Логические основы построения эвм
- Основы алгебры логики
- Логический синтез вычислительных схем
- Электронные технологии и элементы
- Полевые транзисторы
- Планарные микросхемы
- Электронные и логические схемы
- Триггер
- Регистр
- Дешифратор
- Логические операции, выполняемые в компьютере
- Or (или) — логическое сложение
- Xor (исключающее или)
- Not (не) — операция отрицания
- Вопросы для самопроверки
- Раздел 3 Архитектура персонального компьютера Глава 7. Основные блоки эвм и их назначение
- Структурная схема эвм
- Микропроцессор
- Системная шина
- Основная память
- Внешняя память
- Источник питания
- Внешние устройства
- Дополнительные интегральные микросхемы
- Элементы конструкции пк
- Функциональные характеристики эвм
- Производительность, быстродействие, тактовая частота
- Разрядность микропроцессора и кодовых шин интерфейса
- Типы системного и локальных и внешних интерфейсов
- Емкость оперативной памяти
- Виды накопителей на жестких магнитных дисках
- Тип и емкость накопителей на гибких магнитных дисках
- Наличие, виды и емкость кэш-памяти
- Аппаратная и программная совместимость с другими типами компьютеров
- Возможность работы в многозадачном режиме
- Надежность
- Глава 8. Микропроцессоры
- Микропроцессоры типа cisc
- Микропроцессоры Over Drive
- Микропроцессоры Pentium
- Микропроцессоры Pentium Pro
- Микропроцессоры Pentium mmx и Pentium II
- Микропроцессоры Pentium III
- Микропроцессоры Pentium 4
- Эффективные технологии в мп Intel
- Архитектура Intel Net Burst
- Многоядерные микропроцессоры
- Микропроцессоры линейки core
- Процессоры Core Penryn
- Микропроцессоры типа risc
- Микропроцессоры типа vliw
- Физическая и функциональная структура микропроцессора
- Устройство управления
- Арифметико-логическое устройство
- Микропроцессорная память
- Универсальные регистры
- Сегментные регистры
- Регистры смещений
- Регистр флагов
- Статусные флаги
- Управляющие флаги
- Интерфейсная часть мп
- Вопросы для самопроверки
- Глава 9. Системные платы и чипсеты
- Разновидности системных плат
- Чипсеты системных плат
- Чипсет i965 (Broadwater)
- Глава 10. Интерфейсная система пк
- Шины расширений
- Локальные шины
- Интерфейсы pci
- Интерфейс agp
- Периферийные шины
- Интерфейсы ide/ata
- Интерфейс scsi
- Интерфейс rs 232
- Интерфейс ieee 1284
- Универсальные последовательные интерфейсы
- Последовательная шина usb
- Стандарт ieee 1394
- Последовательный интерфейс sata
- Последовательный интерфейс sas
- Семейство последовательных интерфейсов pci Express
- Прикладные программные интерфейсы
- Беспроводные интерфейсы
- Интерфейсы IrDa
- Интерфейс Bluetooth
- Интерфейс wusb
- Семейство интерфейсов WiFi
- Семейство интерфейсов WiMax
- Интерфейс WiBro
- Прочие интерфейсы
- Вопросы для самопроверки
- Глава 11. Основная память пк
- Статическая и динамическая оперативная память
- Основная память
- Физическая структура основной памяти
- Оперативные запоминающие устройства
- Виды модулей оперативной памяти
- Типы оперативной памяти
- Постоянные запоминающие устройства
- Логическая структура основной памяти
- Вопросы для самопроверки
- Глава12. Внешние запоминающие устройства
- Размещение информации на дисках
- Адресация информации на диске
- Накопители на жестких магнитных дисках
- 0,85" Винчестеры Toshiba
- Дисковые массивы raid
- Накопители на гибких магнитных дисках
- Накопители на оптических дисках
- Неперезаписываемые оптические диски cd-rom
- Оптические диски с однократной записью
- Оптические диски с многократной записью
- Оптические универсальные диски dvd
- Маркировка скоростных характеристик cd и dvd
- Эффективные технологии хранения информации на cd и dvd
- Многослойный cd
- Millipede-диск
- Флуоресцентные оптические диски
- Особенности организации флуоресцентных дисков
- Прочие технологии
- Накопители на магнитооптических дисках
- Накопители на магнитной ленте
- Устройства флэш-памяти
- Твердотельные накопители на базе флэш-памяти
- Вопросы для самопроверки
- Глава 13. Видеотерминальные устройства
- Видеомониторы на элт
- Монохромные мониторы
- Цветные мониторы
- Виды развертки изображения на мониторе
- Цифровые и аналоговые мониторы
- Размер экрана монитора
- Вертикальная (кадровая) развертка
- Строчная развертка
- Разрешающая способность мониторов
- Частотная полоса пропускания
- Эргономичность электронно-лучевых мониторов
- Видеомониторы на плоских панелях
- Мониторы на жидкокристаллических индикаторах
- Tmos – мониторы
- Плазменные мониторы
- Электролюминесцентные мониторы
- Светоизлучающие мониторы
- Мониторы на основе «электронной бумаги»
- Стереомониторы
- Видеоконтроллеры
- Вопросы для самопроверки
- Глава 14. Внешние устройства пк
- Клавиатура
- Графический манипулятор мышь
- Принтеры
- Матричные принтеры
- Струйные принтеры
- Лазерные принтеры
- Термопринтеры
- Твердочернильные принтеры
- Сервисные устройства
- Сетевые принтеры
- С канеры
- Типы сканеров
- Форматы представления графической информации в пк
- Форматы растровой графики
- Д игитайзеры
- Основные характеристики дигитайзеров
- Плоттеры
- Типы плоттеров
- Вопросы для самопроверки
- Глава 15. Средства мультимедиа
- Системы речевого ввода и вывода информации
- Системы распознавания речи
- Системы, ориентированные на распознавание отдельных слов, команд и вопросов
- Системы распознавания предложений и связной речи
- Системы идентификации по образцу речи
- Механизм распознавания речи
- Системы синтеза речи
- Компьютерные средства обеспечения звуковых технологий
- Звуковые платы (карты)
- Компьютерные средства обеспечения видеотехнологий
- Вопросы для самопроверки
- Раздел 4. Компьютерные сети Глава 16. Основы построения компьютерных сетей
- Классификация и архитектура компьютерных сетей
- Виды компьютерных сетей
- Модель взаимодействия открытых систем
- Локальные вычислительные сети
- Виды локальных вычислительных сетей
- Одноранговые локальные сети
- Серверные локальные сети
- Корпоративные компьютерные сети
- Глобальная информационная сеть Интернет
- Протоколы, используемые в сети
- Программное обеспечение компьютерных сетей
- Информационное обеспечение сетей
- Вопросы для самопроверки
- Глава 17.Техническое обеспечение компьютерных сетей
- Серверы и рабочие станции
- Рабочие станции
- Серверы
- Маршрутизаторы и коммутирующие устройства
- Методы коммутации
- Коммутация сообщений
- Коммутация пакетов
- Методы маршрутизации
- Варианты адресации компьютеров в сети
- Методы маршрутизации, используемые в сетях
- Модемы и сетевые карты
- Модемы для аналоговых каналов связи
- Протоколы передачи данных
- Модемы для цифровых каналов связи
- Сетевые карты
- Линии и каналы связи
- Цифровые каналы связи
- Раздел 5. Программное управление Глава 18. Программное управление — основа автоматизации вычислительного процесса После изучения главы вы должны знать:
- Алгоритмы и языки программирования
- Состав машинных команд
- Пример программы на яск
- Программное обеспечение компьютера
- Системное программное обеспечение
- Операционные системы компьютеров
- Прикладное программное обеспечение
- Прикладные программы для офиса
- Корпоративные прикладные программы
- Режимы работы компьютеров
- Однопрограммный режим
- Многопрограммный режим
- Система прерываний программ в пк
- Адресация регистров и ячеек памяти в пк
- Относительная адресация
- Стековая адресация
- Вопросы для самопроверки
- Глава 19.Элементы программирования на языке Ассемблер
- Основные компоненты языка ассемблер Алфавит языка
- Константы (числа и строки) Только целые числа
- Строки (литералы)
- Команды (операторы)
- Директивы (псевдооператоры)
- Модификаторы
- Адресация регистров и ячеек памяти в Ассемблере
- Непосредственная адресация
- Прямая адресация регистров мпп
- Адресация ячеек оп
- Основные команды языка ассемблер
- Команды пересылки данных
- Арифметические команды
- Команды сложения, вычитания и сравнения
- Команды приращения
- Команды умножения
- Команды деления
- Логические команды
- Команды безусловной передачи управления
- Команды перехода к подпрограмме и выхода из подпрограммы
- Команда перехода к подпрограмме: call opr
- Команда выхода из подпрограммы
- Команды условной передачи управления
- Команды условной передачи управления для беззнаковых данных
- Команды условной передачи управления для знаковых данных
- Команды условной передачи управления для прочих проверок
- Команды управления циклами
- Команды прерывания
- Основные директивы ассемблера
- Директивы определения идентификаторов
- Директивы определения данных
- Директивы определения сегментов и процедур
- Директивы управления трансляцией
- Программирование процедур работы с устройствами ввода-вывода
- Программирование работы с дисплеем
- Видеооперации с прерыванием 21h dos
- Программирование работы с клавиатурой
- Некоторые аспекты создания исполняемых программ
- Процедуры формирования программы
- Структура программы на языке ассемблера для создания файла exe
- Программа вычисления квадратного корня
- Основные сведения о листинге программы
- Последовательность работы пк при выполнении программы
- Краткие сведения об отладчике программ debug
- Основные команды отладчика debug
- Вопросы для самопроверки
- Заключение. Перспективы развития информационных систем
- Литература