Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/2256: Рейтинг темы: голосов - 2256, средняя оценка - 4.63
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16379 / 7691 / 1080
Регистрация: 11.11.2010
Сообщений: 13,773
15.11.2013, 04:26  [ТС]
ГЛАВА 10
АРИФМЕТИЧЕСКИЕ КОМАНДЫ
(часть 7/7)


Изменение размера числа
Пусть к числу из регистра BX надо прибавить число из регистра AL (BX+ALhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrowBX). Здесь требуется сложить слово с байтом, но команды для сложения слова с байтом не существует, поэтому сперва требуется сделать равными размеры этих чисел, а именно расширить байт, содержащийся в AL, до слова, записав его, скажем, в регистр AX, и только затем сложить числа из регистров AX и BX. Если число в регистре AL трактуется как беззнаковое, то для расширения байта до слова требуется записать 0 в регистр AH – это беззнаковое расширение. Для чисел со знаком, если число отрицательное – слева требуется дописать двоичные единички, а если положительное – нули. Для осуществления расширения чисел со знаком в систему команд введены специальные команды.
Команды CBW, CWD, CWDE, CDQ, CQO
Команды с фиксированым месторасположением операнда и результата.
CBW – Convert Byte to Word – Знаковое расширение содержимого регистра AL до слова в AX
https://www.cyberforum.ru/cgi-bin/latex.cgi?AH = 0 при https://www.cyberforum.ru/cgi-bin/latex.cgi?AL\geq 0
https://www.cyberforum.ru/cgi-bin/latex.cgi?AH = 0FFh при https://www.cyberforum.ru/cgi-bin/latex.cgi?AL<0
По команде CBW операнд всегда берется из AL, а результат всегда записывается в AX. Команда CBW пишет в регистр AH число 00h или 0FFh в зависимости от знака числа из регистра AL.
CWD – Convert Word to Double word – Знаковое расширение содержимого регистра AX до двойного слова в регистрах AX: DX
https://www.cyberforum.ru/cgi-bin/latex.cgi?DX = 0 при https://www.cyberforum.ru/cgi-bin/latex.cgi?AX\geq 0
https://www.cyberforum.ru/cgi-bin/latex.cgi?DX=0FFFFh при https://www.cyberforum.ru/cgi-bin/latex.cgi?AX<0
Для CWD операнд всегда берется из AX, а результат всегда записывается в DX:AX. Команда CWD записывает в регистр DX число 0 или 0FFFFh в зависимости от знака числа из регистра AX.
CWDE – Convert Word to Double Extend word – Знаковое расширение содержимого регистра AX до двойного расширенного слова в EAX
Старшая часть https://www.cyberforum.ru/cgi-bin/latex.cgi?EAX=0 при https://www.cyberforum.ru/cgi-bin/latex.cgi?AX\geq 0
Старшая часть https://www.cyberforum.ru/cgi-bin/latex.cgi?EAX=0FFFFh при https://www.cyberforum.ru/cgi-bin/latex.cgi?AX<0
Команда CWDE преобразует слово со знаком, находящееся в регистре AX, в двойное слово со знаком, помещаемое в регистр EAX, распространением старшего бита регистра AX в два старших байта регистра EAX:
CDQ – Convert Double word to Quadruple word – Знаковое расширение содержимого регистра EAX до учетверенного слова в регистрах EAX:EDX
https://www.cyberforum.ru/cgi-bin/latex.cgi?EDX=0 при https://www.cyberforum.ru/cgi-bin/latex.cgi?EAX\geq 0
https://www.cyberforum.ru/cgi-bin/latex.cgi?EDX=0FFFFFFFFh при https://www.cyberforum.ru/cgi-bin/latex.cgi?EAX<0
Команда CDQ преобразует двойное слово со знаком, находящееся в регистре EAX, в 64-битовое целое со знаком, помещаемое в регистры EDX:EAX, распространением старшего бита регистра EAX по всем битам регистра EDX.
CDQE – Convert Double word to Quadruple Extend word – Знаковое расширение содержимого регистра EAX до учетверенного расширенного слова в RAX
CQO – Convert Quadruple to Octal word – Знаковое расширение содержимого регистра RAX до восьми слов в регистрах RAX:RDX
Псевдокод команды: IF OperandSize = 16 ;CBW
THEN AXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AL)
ELSE IF OperandSize = 32 ;CWDE
THEN EAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AX);
ELSE IF 64-Bit Mode and OperandSize = 64 ;CDQE
THEN RAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(EAX);
ENDIF;
IF OperandSize = 16 ;CWD
THEN DXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AX)
ELSE IF OperandSize = 32 ;CDQ
EDXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(EAX);
ELSE IF 64-Bit Mode and OperandSize = 64 ;CQO
RDXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(RAX);
ENDIF;
Применение: перед командой IDIV для расширения AL/AX/EAX на AH/DX/EDX перед делением с 8/16/32-битным операндом. Если в AL/AX/EAX беззнаковое число менее 80h/8000h/80000000h, инструкцию CBW/CWD/CDQ можно использовать для обнуления AH/DX/EDX (длина команды CBW/CWD/CDQ 1 байт в отличие от двухбайтовых команд
sub или xor).
Команда Эквивалент
cbw movsx ax, al
cwde movsx eax, ax
movsx eax,al
cbw
cwde
cdq
mov edx,eax
sar edx,31
cdqmov edx,80000000h
cmp edx,eax
sbb edx,edx
cdq
xor edx,edx
cmp eax,edx
setge dl
dec edx
cdq
xor edx,edx
or ebx,-1
cmp eax,edx
cmovl edx,ebx
Фиксированное местонахождение операнда и результата делают команды CBW, CWD, CWDE, CDQ, CDQE и CQO не очень удобными. Поэтому для процессора i80386 и выше созданы команды знакового расширения MOVSX и беззнакового расширения MOVZX, читающие содержимое по указанному адресу (из регистра или памяти) и записывающие расширенный результат в указанную ячейку памяти или любой регистр.
Кодировка CBW/CWD/CWDE/CDQ/CDQE/CQO
команда опкод описание
CBW 66h 98h AXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AL)
CWDE 98h EAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AX)
CDQE REX.W+98h RAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(EAX)
CWD 66h 99h DX:AXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(AX)
CDQ 99h EDX:EAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(EAX)
CQO REX.W+99h RDX:RAXhttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(RAX)
Видно, что коды инструкций CBW/CWDE/CDQE и коды CWD/CDQ/CQO совпадают, но в 32-разрядном режиме перед CBW и CWD стоит префикс размера операнда 66h, а в 64-разрядном режиме – перед CDQE и CQO.
Команда MOVZX
(Пересылка с нулевым расширением =”MOVE and Zero EXTENSION”)
Синтаксис команды:
MOVZX <DEST>,<SRC>
Возможные варианты команды:
movzx reg,reg/mem
Семантика команды
: преобразование элементов без знака меньшей размерности в эквивалентные им элементы без знака большей размерности.
Псевдокод команды:
DESThttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow ZeroExtend(SRC)
Алгоритм работы:
  • считать содержимое операнда SRC;
  • записать содержимое операнда SRC в операнд DEST, начиная с его младших разрядов;
  • распространить двоичный нуль на свободные старшие разряды операнда DEST.
Применение: команду MOVZX обычно используют для получения эквивалентного, но большего по размеру операнда без учета знака. Она может быть использована для согласования операндов различной размерности. Но не следует думать, что все эти разнотипные пересылки делает одна машинная команда. На самом деле существует несколько машинных команд, каждая из которых работает со своими размерами операндов. Генерацию нужной команды обеспечивает транслятор на основе анализа исходного текста программы:
Assembler
1
2
3
4
5
mov al,0FFh
movzx bx,al ;bx=00FFh
;или из памяти
sl db ?
movzx eax,byte ptr sl
команда эквивалент эквивалент команда эквивалент эквивалент
movzx ebx,al
xor ebx,ebx
mov bl,al
mov bl,al
and ebx,0FFh
movzx eax,silea eax,[si]movzx eax,al
Команда MOVSX
(Пересылка со знаковым расширением ”MOVE and Sign EXTENSION”)
Синтаксис команды:
MOVSX <DEST>,<SRC>
Возможные варианты команды:
movsx reg,reg/mem
Семантика команды
: преобразование элементов со знаком меньшей размерности в эквивалентные им элементы со знаком большей размерности.
Псевдокод команды:
DESThttps://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SignExtend(SRC)
Алгоритм работы:
  • считать содержимое операнда SRC;
  • записать содержимое операнда SRC в операнд DEST, начиная с младших разрядов операнда DEST;
  • распространить значение знакового разряда на свободные старшие разряды операнда DEST.
Применение: команду MOVSX обычно используют для получения эквивалентного, но большего по размеру операнда со знаком. Это может понадобиться для приведения размера операнда к нужному значению с целью обеспечения работы следующих команд программы:
Assembler
1
2
MOV AL,0FFh
MOVSX BX,AL ;BX=0FFFFh
Команда PMOVMSKB
( =”Packed MOVE Byte Mask to integer”)
Синтаксис команды:
PMOVMSKB <DEST>,<SRC>
Возможные варианты команды:
pmovmask reg32/64,mmx
pmovmask reg32/64,xmm
Семантика команды: формирование байта, содержащего знаковые биты восьми байтов, содержащихся в операнде SRC, в качестве которого может выступать один из MMX-регистров. Операндом DEST является 32-/64-разрядный регистр общего назначения, младший байт которого будет содержать результат. Если в качестве операнда SRC использован один из XMM-регистров, то будет сформировано два байта, содержащие знаковые биты шестнадцати упакованных байтов.
Псевдокод команды: r32[0]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[07];
r32[1]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[15];
r32[2]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[23];
r32[3]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[31];
r32[4]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[39];
r32[5]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[47];
r32[6]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[55];
r32[7]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow SRC[63];
r32[31:8]https://www.cyberforum.ru/cgi-bin/latex.cgi?\leftarrow ZERO_FILL;
Применение: команда PMOVMSKB удобна для формирования условных ветвлений по таблице.
Контрольные вопросы и упражнения
  1. Имеются следующие данные:
    Assembler
    1
    2
    3
    4
    
    DATAX DW 0148h
    DW 2316h
    DATAY DW 0237h
    DW 4D52h
    Напишите программы для сложения:
    1. переменной DATAX, размером в слово, с переменной DATAY, размером в слово;
    2. переменной DATAX, размером в двойное слово, с переменной DATAY, размером в двойное слово.
  2. Объясните к чему приведет действие следующих команд:
    Assembler
    1
    2
    3
    
    STC
    MOV EBX,DATAX
    ADC EBX,DATAY
  3. Составьте программу:
    1. сложения переменных из ячеек памяти OP1 и OP2, передачи суммы в ячейку OP2 и перехода к метке ADDOVF в случае переполнения;
    2. вычитания переменных из ячеек памяти OP2 и OP1, передачи разности в OP2 и перехода к метке SUBVF в случае переполнения.
  4. Напишите программы для умножения, используя только команды для микропроцессора i286:
    1. переменной DATAX, размером в слово на переменную DATAY, размером в слово;
    2. переменной DATAX, размером в двойное слово на переменную DATAY, размером в двойное слово (подсказка: необходимо представить произведение https://www.cyberforum.ru/cgi-bin/latex.cgi?(a\cdot 2^{32}+b)\times (c\cdot 2^{32}+d) как https://www.cyberforum.ru/cgi-bin/latex.cgi?ac\cdot 2^{64}+(ad+bc)\cdot 2^{32}+b\cdot d и использовать команды MUL, ADD и ADC).
  5. Напишите программы для деления:
    1. переменной DATAX, размером в слово, на 23;
    2. переменной DATAX, размером в двойное слово, на переменную DATAY, размером в слово.
  6. Запишите команду увеличения на единицу значения переменной DATAX.
  7. Какой делитель, кроме нуля, вызывает ошибку переполнения?
  8. Запишите последовательность команд вычитания из переменной DATAX переменной DATAY.
  9. Пусть регистр AL=0B4h и регистр BL=11h. Почему после команды IMUL BL в регистре AX число 0FAF4h, а после команды MUL BL в регистре AX число 0BF4h?
  10. Предположим, что значение переменной DATAX увеличено на единицу с помощью команды ADD. Как это повлияет на содержимое флагов CF, OF, PF и SF?
  11. Пусть регистр AX=0400h и регистр BL=0B4h. Почему после команды IDIV BL в регистре AX число 24F3h, а после команды DIV BL в регистре AX число 7C05h?
  12. Напишите программу для беззнакового деления переменной, размером в 6 байтов, на переменную, размером в слово, используя только команды для микропроцессора i286. Подсказка: необходимо представить делимое как https://www.cyberforum.ru/cgi-bin/latex.cgi?(a\cdot 2^{32}+b\cdot 2^{16}+c), а делитель как https://www.cyberforum.ru/cgi-bin/latex.cgi?d; первое деление https://www.cyberforum.ru/cgi-bin/latex.cgi?a на https://www.cyberforum.ru/cgi-bin/latex.cgi?d даст частное https://www.cyberforum.ru/cgi-bin/latex.cgi?r_1 и остаток https://www.cyberforum.ru/cgi-bin/latex.cgi?q_1; второе деление https://www.cyberforum.ru/cgi-bin/latex.cgi?(q_{1}\cdot 2^{16}+b) на https://www.cyberforum.ru/cgi-bin/latex.cgi?d – частное https://www.cyberforum.ru/cgi-bin/latex.cgi?r_2 и остаток https://www.cyberforum.ru/cgi-bin/latex.cgi?q_2; третье деление https://www.cyberforum.ru/cgi-bin/latex.cgi?(q_{2}\cdot 2^{16}+c) на https://www.cyberforum.ru/cgi-bin/latex.cgi?d – частное https://www.cyberforum.ru/cgi-bin/latex.cgi?r_3 и остаток https://www.cyberforum.ru/cgi-bin/latex.cgi?q_3; результатом будет частное https://www.cyberforum.ru/cgi-bin/latex.cgi?(r_{1}\cdot 2^{32}+r_{2}\cdot 2^{16}+r_{3}) и остаток https://www.cyberforum.ru/cgi-bin/latex.cgi?q_3.
  13. Напишите программу для беззнакового деления переменной, размером в n слов, на переменную, размером в слово.
  14. Алгоритм беззнакового деления с двойной точностью числа https://www.cyberforum.ru/cgi-bin/latex.cgi?(c\cdot 2^{32}+d) на число https://www.cyberforum.ru/cgi-bin/latex.cgi?(a\cdot 2^{32}+b) заключается в следующем. Вычислить такие https://www.cyberforum.ru/cgi-bin/latex.cgi?q и https://www.cyberforum.ru/cgi-bin/latex.cgi?r, что https://www.cyberforum.ru/cgi-bin/latex.cgi?c=ar+q (https://www.cyberforum.ru/cgi-bin/latex.cgi?r частное от деления https://www.cyberforum.ru/cgi-bin/latex.cgi?c на https://www.cyberforum.ru/cgi-bin/latex.cgi?a, а https://www.cyberforum.ru/cgi-bin/latex.cgi?q остаток). Но равенство https://www.cyberforum.ru/cgi-bin/latex.cgi?c=ar+q означает, что https://www.cyberforum.ru/cgi-bin/latex.cgi?c\cdot 2^{32}+d=(a\cdot r+q)\cdot 2{32}+d=r\cdot(a\cdot 2^{32}+b)+q\cdot 2^{32}+d-r\cdot b. Число https://www.cyberforum.ru/cgi-bin/latex.cgi?q\cdot 2^{32}+d-r\cdot b считается остатком первоначального деления; если оно отрицательно, следует производить повторяющийся декремент https://www.cyberforum.ru/cgi-bin/latex.cgi?r до тех пор, пока оно не станет положительным. Напишите программу, реализующую данный алгоритм.
  15. Напишите программу, которая определит какое умножение более быстрое: умножение командой MUL, умножение из сдвигов и сложений или умножение по алгоритму Бутса.
  16. Напишите программу, которая определит какое деление более быстрое:
    деление командой DIV, умножение из сдвигов и вычитаний или по алгоритму деления без восстановления.
  17. Напишите программы, которые выполняют следующие действия:
    1. https://www.cyberforum.ru/cgi-bin/latex.cgi?Z\leftarrow W+(X-Z);
    2. https://www.cyberforum.ru/cgi-bin/latex.cgi?Z\leftarrow W\cdot(X+6)-(Y+9);
    3. https://www.cyberforum.ru/cgi-bin/latex.cgi?Z\leftarrow \frac{W\times X}{Y+6} https://www.cyberforum.ru/cgi-bin/latex.cgi?R\leftarrow остаток;
    4. https://www.cyberforum.ru/cgi-bin/latex.cgi?Z\leftarrow (\frac{W-X}{10}\times Y)^{2}.
  18. Ассемблерный PUZZLE:
    1. в регистре AL число –63, поставьте в правильном порядке операции
      NEG AL;
      INC AL;
      SAR AL,1;
      SUB AL,32,
      чтобы после выполнения всех операций AL стал равным 0;
    2. в регистре AL число –70, поставьте в правильном порядке следующие операции:
      ADD AL,19;
      SAL AL,1;
      DEC AL;
      DEC AL;
      SUB AL,–123,
      чтобы после выполнения всех операций AL стал равным 0;
    3. в регистре AL число –83, поставьте в правильном порядке следующие операции:
      NEG AL;
      ADD AL,93;
      NEG AL;
      SAL AL,1;
      NEG AL;
      SUB AL,–1,
      чтобы после выполнения всех операций AL стал равным 0;
    4. в регистре AL число –31, поставьте в правильном порядке следующие операции
      ADD AL,–78;
      SUB AL,82;
      SAR AL,1;
      ADD AL,79;
      ADD AL,–125;
      SUB AL,–53,
      чтобы после выполнения всех операций AL стал равным 0;
  19. Оформите приведённую ниже последовательность команд в виде программы, зафиксировав в комментариях для каждой команды причину изменения того или иного флага и указав содержимое регистра, изменившего своё значение:
    1. Assembler
      1
      2
      3
      4
      
      mov ax,7FF0h
      add al,10h
      add ah,1
      add ax,2
    2. Assembler
      1
      2
      3
      4
      5
      6
      
      mov ax,0
      mov cx,0
      mov al,0F0h
      mov cl,78h
      add al,cl
      adc ah,ch
    3. Assembler
      1
      2
      3
      
      mov ax,0
      sub al,1
      mov al,–128
    4. Assembler
      1
      2
      3
      4
      5
      6
      
      mov ax,0
      mov bx,0
      mov al,22
      mov bl,26
      sub al,bl
      sbb ah,0
    5. Assembler
      1
      2
      
      mov ax,30000
      shl ax,1
    6. Assembler
      1
      2
      3
      4
      
      mov ax,0
      mov al,0
      mov bl,255
      mul bl
    7. Assembler
      1
      2
      3
      4
      
      mov dx,0
      mov ax,2
      mov bx,3
      div bx
    8. Assembler
      1
      2
      3
      
      mov ax,23
      mov bl,–5
      idiv bl
  20. Напишите программу, демонстрирующую последовательную установку флагов ZF, SF, CF, OF в единицу, используя только арифметические команды: ADD, SUB, INC, DEC и NEG.
  21. Запишите последовательность из двух команд, при выполнении которых одновременно устанавливаются флаги CF и OF. Объясните причину изменения состояния указанных флагов.
  22. Преобразовать приведённые ниже адреса, используемые процессором в реальном режиме и заданные в форме «сегмент-смещение» (в шестнадцатеричной системе счисления), в линейные:
    1. 0950:0100;
    2. 0CD1:02E0.
    Результат вывести на экран.
  23. Напишите программу сложения трёх целых чисел, введённых с клавиатуры в регистры процессора, отображая изменения значений регистров на экране дисплея.
  24. Напишите программу вычитания трёх целых чисел, введённых с клавиатуры в регистры процессора, отображая изменения значений регистров на экране дисплея.
  25. Напишите программу перемножения трёх целых чисел, введённых с клавиатуры в регистры процессора, отображая изменения значений регистров на экране дисплея.
  26. Напишите программу получения остатка от деления целого числа https://www.cyberforum.ru/cgi-bin/latex.cgi?m (однобайтного или двухбайтного) на целое однобайтное число https://www.cyberforum.ru/cgi-bin/latex.cgi?k. Ввод чисел в регистры процессора осуществите с клавиатуры. Результаты изменения значений регистров отобразите на экране дисплея.
  27. Действительно ли, что операция целочисленного умножения выполняется быстрее операции целочисленного деления?
  28. Напишите программу получения суммы остатков от деления целых двухбайтных чисел https://www.cyberforum.ru/cgi-bin/latex.cgi?a, https://www.cyberforum.ru/cgi-bin/latex.cgi?b и https://www.cyberforum.ru/cgi-bin/latex.cgi?z на целое однобайтовое число https://www.cyberforum.ru/cgi-bin/latex.cgi?k. Ввод чисел в регистры процессора осуществите с клавиатуры. Результат поместите в регистр AX с отображением его значения на экране.
  29. Напишите программу, вычисляющую площадь квадрата по данной его диагонали, введённой с клавиатуры.
  30. Напишите программу, вычисляющую площадь трапеции по данным её основаниям и высоте, введённым с клавиатуры.
  31. Напишите программу, вычисляющую площадь треугольника по данным его основанию и высоте, введённым с клавиатуры.
  32. Напишите программу, вычисляющую площадь ромба по данным его диагоналям, введённым с клавиатуры.
  33. Напишите программу, вычисляющую квадрат диагонали прямоугольника по данным его двум сторонам, введённым с клавиатуры.
  34. Напишите программу, вычисляющую периметр и площадь прямоугольника по данным его сторонам, введённым с клавиатуры.
  35. Напишите программу, вычисляющую объём прямоугольного параллелепипеда по заданным длинам его рёбер, введённым с клавиатуры.
  36. Напишите программу, вычисляющую площадь боковой поверхности куба по заданной длине его ребра.
  37. Напишите программу, вычисляющую полную поверхность прямоугольного параллелепипеда по заданным длинам его рёбер.
  38. Напишите программу, определяющую координаты вершины параболы https://www.cyberforum.ru/cgi-bin/latex.cgi?y=a\times x^{2}+b\times x+c по данным коэффициентам https://www.cyberforum.ru/cgi-bin/latex.cgi?a, https://www.cyberforum.ru/cgi-bin/latex.cgi?b, https://www.cyberforum.ru/cgi-bin/latex.cgi?c, введённым с клавиатуры.
  39. Напишите программу по вычислению значения выражения при различных значениях https://www.cyberforum.ru/cgi-bin/latex.cgi?a, вводимых с клавиатуры: https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{20\times a-34}{a^{2}-a}+61-a. В комментариях программы поясните, при каких значениях https://www.cyberforum.ru/cgi-bin/latex.cgi?a программа выдаёт ошибку или неправильный результат и почему.
  40. По фрагменту программы восстановите функцию https://www.cyberforum.ru/cgi-bin/latex.cgi?f(x):
    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    mov bx,[x]
    mov ax,bx
    imul al
    dec ax
    xchg ax,bx
    imul al
    shl ax,1
    mov cx,8
    sub cx,ax
    mov ax,cx
    idiv bl
  41. По фрагменту программы восстановите арифметическое выражение с переменными https://www.cyberforum.ru/cgi-bin/latex.cgi?a, https://www.cyberforum.ru/cgi-bin/latex.cgi?b:
    Assembler
    1
    2
    3
    4
    
    mov ax,[a]
    mov bx,[b]
    add ax,bx
    shl ax,1
  42. По фрагменту программы восстановите арифметическое выражение с переменными https://www.cyberforum.ru/cgi-bin/latex.cgi?a, https://www.cyberforum.ru/cgi-bin/latex.cgi?b, https://www.cyberforum.ru/cgi-bin/latex.cgi?z:
    Assembler
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    mov ax,[a]
    mov bx,[b]
    mov cx,[z]
    add bx,cx
    add ax,bx
    shr ax,1
    mov bx,ax
    mov cx,[a]
    sub ax,cx
    mul bx
    mov cx,[b]
    sub bx,cx
    mul bx
    add bx,cx
    mov cx,[z]
    sub bx,cx
    mul bx
  43. Пусть в регистре MM0 находится число 000180007F380001h, а в регистре MM2 – число 00020001E8E9FFFFh. Что окажется в MM0 в результате следующих вычитаний?
    1. psubw MM0,MM2;
    2. psubusw MM0,MM2;
    3. psubsw MM0,MM2.
Изображения
   
0
Закрытая тема Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru