
- •Содержание
- •Введение
- •1. Цель работы.
- •2. Теоретические основы.
- •2.1. Команды целочисленной арифметики ia-32
- •4. Команда обмена данных
- •2.2. Пример линейной программы
- •X sword ?
- •2.3. Организация ввода-вывода
- •Vvod: Invoke StdOut,addr zapros
- •Invoke StdIn,addr buffer,LengthOf buffer
- •Invoke StripLf,addr buffer
- •3. Используемое оборудование.
- •5. Порядок выполнения работы.
- •Варианты
- •Литература
Федеральное агентство по образованию
Г
осударственное
образовательное учреждение
высшего профессионального образования
«МАТИ» – Российский государственный
технологический университет им. К.Э.Циолковского
Кафедра «Технология производства приборов и информационных систем управления летательных аппаратов»
Программирование на ассемблере MASM32. Программирование целочисленных выражений.
Методические указания к лабораторной работе
по дисциплине «Архитектура ЭВМ и систем»,
для специальности 230102.65 «Автоматизированные системы обработки информации и управления»
Автор: Пахомов М.М.
Москва 2012
Содержание
Введение
1. Цель работы
2. Теоретические основы
3. Используемое оборудование
4. Порядок выполнения работы
Литература
Введение
Настоящее методическое пособие является указанием для выполнения второй лабораторной работы по дисциплине «Архитектура ЭВМ и систем».
1. Цель работы.
1. Изучить команды процессора для работы с целыми числами.
2.Научиться программировать целочисленные арифметические выражения.
2. Теоретические основы.
2.1. Команды целочисленной арифметики ia-32
Процессоры семейства IA-32 поддерживают арифметические операции над однобайтовыми, двухбайтовыми и четырехбайтовыми целыми числами.
Размер операндов при этом определяется:
объемом регистра, хранящего число – если хотя бы один операнд находится в регистре;
размером числа, заданным директивой определения данных;
специальными описателями, например, BYTE PTR (байт), WORD PTR (слово) и DWORD PTR (двойное слово), если ни один операнд не находится в регистре и размер операнда отличен от размера, определенного директивой определения данных.
При описании команд ассемблера использованы следующие условные обозначения:
r8 – один из 8-ми разрядных регистров: AL, AH, BL, BH, CL, CH, DL, DH;
r16 – один из 16-ти разрядных регистров: AX, BX, CX, DX, SI, DI, SP, BP;
r32 – один из 32-х разрядных регистров: EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP;
reg – произвольный регистр общего назначения любого размера;
sreg – один из 16-разрядных сегментных регистров: CS, DS, ES, SS, FS, GS;
imm8 – непосредственно заданное 8-ми разрядное значение;
imm16 – непосредственно заданное 16-ти разрядное значение;
imm32 – непосредственно заданное 32-х разрядное значение;
imm – непосредственно заданное значение любого размера;
r/m8 – 8-ми разрядный операнд в регистре или в памяти;
r/m16 – 16-ти разрядный операнд в регистре или в памяти;
r/m32 – 32-ти разрядный операнд в регистре или в памяти;
mem – адрес 8-ми, 16-ти или 32-х разрядного операнда в памяти;
rel8, rel16, rel32 – 8-ми, 16-ти или 32-х разрядная метка.
1. Команда пересылки данных – пересылает число размером 1, 2 или 4 байта из источника в приемник:
mov Приемник, Источник
Допустимые варианты:
mov reg, reg
mov mem, reg
mov reg, mem
mov mem, imm
mov reg, imm
mov r/m16, sreg
mov sreg, r/m16
Примеры:
а) mov AX, BX
б) mov ESI, 1000
в) mov 0[DI], AL
г) mov AX, code
mov DS, AX
2. Команда перемещения и дополнения нулями – при перемещении значение источника помещается в младшие разряды, а в старшие заносятся нули:
movzx Приемник, Источник
Допустимые варианты:
movzx r16/r32, r/m8
movzx r32, r/m16
Примеры:
а) movzx EAX, BX
б) movzx SI, AH
3. Команда перемещения и дополнения знаковым разрядом – команда выполняется аналогично, но в старшие разряды заносятся знаковые биты:
movsx Приемник, Источник