Автор Тема: "Считать из ячейки памяти с адресом 8200H число ...." помогите пожалуйста решить  (Прочитано 1649 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Venera_7

  • Коллежский регистратор
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Женский
Пожалуйста, помогите разобраться с задачкой на TASM, очень слабо в этом ориентируюсь :
Считать из ячейки памяти с адресом 8200H число.Если окажется, что
в седьмом разряде 1, то число отрицательное и преобразовать его в
положительное. Результат переслать в порт 0F9H.

Заранее Спасибо!


Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
точно синтаксис тасма не помню но
Код: (assembler) [Выделить]
mov ax, 8200h
mov ax, byte ptr ax
mov bx, ax
and bx, 1000000b
shr bx, 6
cmp bx, 0
je .next
not ax
.next
out ax, 0f9h
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/

Оффлайн Venera_7

  • Коллежский регистратор
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Женский
А как вы производите преобразование в положительное число? (не совсем понятно)

Оффлайн melkiy

  • Глобальный модератор
  • Действительный статский советник
  • *****
  • Сообщений: 1124
  • Репутация: 24
  • Пол: Мужской
Комрад Veliant, кажется, немного намудрил. Предполагая, что требуемое число - байт, а 7-й бит - на самом деле старший (знаковый), если считать биты с 0, попробую написать свой вариант:

Код: (assembler) [Выделить]
mov bx, 8200h
mov al, byte ptr [bx]
cmp al, 0
jge m
neg al
m: out 0F9h
Насколько я понял из справки по архитектуре x86 - x286, команда out выводит в указанный порт байт al, который, значит, будет неявным операндом.
... Есть пауки, которые плетут ловчие сети, и есть пауки-бродяги. В любом случае они хЫщники.

Оффлайн Venera_7

  • Коллежский регистратор
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Женский
А это задание можно выполнить в среде отладчика Turbo Debugger ? Или результат кода туда вывести и просмотреть?