Emu8086 Запускаем программу Emu8086 и создаём новый файл через меню file new com template (Файл Новый Шаблон файла com). В редакторе исходного кода после этого мы увидим следующее Рис. Создание нового файла в Emu8086
Скачать 251.21 Kb.
|
Арифметические и логические командыБольшинство арифметических и логических команд влияют на регистр состояния процессора (или Флаги) Как вы можете видеть, в этом регистре 16 бит. Каждый бит называется флагом и может принимать значение 1 или 0.
Имеются три группы команд. Первая группа: ADD, SUB,CMP, AND, TEST, OR, XOR Эти типы операндов поддерживаются: REG, memory memory, REG REG, REG memory, immediate REG, immediate REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], переменная, и т.п... immediate: 5, -24, 3Fh, 10001101b, и т.п... После операции между операндами результат всегда записывается в первый операнд. Команды CMP и TEST воздействуют только на флаги и не записывают результат (эта команда используется для принятия решения во время выполнения программы). Эти команды влияют только на флаги: CF, ZF, SF, OF, PF, AF.
1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0 Как видите, мы получаем 1 только в том случае, если оба бита равны 1.
1 OR 1 = 1 1 OR 0 = 1 0 OR 1 = 1 0 OR 0 = 0 Как видите, мы получаем 1 каждый раз, когда хотя бы один бит равен 1.
1 XOR 1 = 0 1 XOR 0 = 1 0 XOR 1 = 1 0 XOR 0 = 0 Как видите, мы получаем 1 каждый раз, когда биты имеют различное значение. Вторая группа: MUL, IMUL, DIV, IDIV Эти типы операндов поддерживаются: REG memory REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], переменная, и т.п... Команды MUL и IMUL влияют только на эти флаги: CF, OF Если результат превышает размер операнда, то эти флаги установлены в 1, если результат умещается в размер операнда, то эти флаги установлены в 0. Для команд DIV и IDIV флаги не определены.
если операнд - это байт: AX = AL * операнд. если операнд - это слово: (DX AX) = AX * операнд.
если операнд - это байт: AX = AL * операнд. если операнд - это слово: (DX AX) = AX * операнд.
если операнд - это байт: AL = AX / операнд AH = остаток (модуль). . если операнд - это слово: AX = (DX AX) / операнд DX = остаток (модуль). .
если операнд - это байт: AL = AX / операнд AH = остаток (модуль). . если операнд - это слово: AX = (DX AX) / операнд DX = остаток (модуль). . Третья группа: INC, DEC, NOT, NEG Эти типы операндов поддерживаются: REG memory REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP. memory: [BX], [BX+SI+7], переменная, и т.п... Команды INC и DEC влияют только на эти флаги: ZF, SF, OF, PF, AF. Команда NOT не влияет ни на какие флаги! Команда NEG влияет только на эти флаги: CF, ZF, SF, OF, PF, AF.
|