ХАНДЫФАР

Преобразовать слово в двойное слово


CWD - DX:AX := знаковое расширение AX.


Удваивает размер операнда в регистре ax с помощью расширения знака и сохраняет результат в регистре DX:AX. Инструкция cwd копирует знак (бит 15) значения в регистре ax в каждую позицию бита в регистре dx. Инструкция cwd может быть использована для получения деления на два слова из слова перед делением на слово.


Инструкция cwd предназначена для использования, когда атрибут размера операнда равен 16. Некоторые ассемблеры могут принудительно увеличивать размер операнда до 16 при использовании cwd.


В качестве примера, если регистр ax содержит 7910, (004F16), выполняющаяся инструкция cwd сохранит 0 в регистре dx. Поскольку 7910 является положительным числом то, регистр dx заполняется значением 0. Во втором примере регистр ax имеет отрицательное значение -410 (FFFC16), то есть последний знаковый бит установлен в 1. После выполнения инструкции cwd регистр dx заполняется значением знакового бита регистра ax.


  1. title Автор: Довгополов Евгений Сергеевич
  2. .model small
  3. .stack 100h
  4. code segment public _______; Начало сегмента кода
  5. ____assume cs:code
  6. ____main proc _____________; Начало процедуры main
  7. ________mov_____ax, 79_____; Копируем значение 79 в регистр ax
  8. ________cwd________________; Выполняем знаковое расширение
  9. ________mov_____ax, -4_____; Копируем значение -4 в регистр ax
  10. ________cwd________________; Выполняем знаковое расширение
  11. ________mov_____ax, 4C00h__; Копируем значение функции завершения процесса в ah а значение в al
  12. ________int_____21h _______; Вызываем прерывание DOS
  13. ____main endp _____________; Конец процедуры main
  14. code ends _________________; Конец сегмента кода
  15. end main __________________; Конец файла. Точкой входа указывается процедура main
Made on
Tilda