Консультация № 186404
21.06.2012, 18:52
98.83 руб.
0 3 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере.
Задание 1. Записать в двоичном и шестнадцатеричном виде представление в памяти ПК следующих чисел (следует учитывать, что числа размером в слово хранятся в «перевернутом» виде), приведенных ниже

Числа для представления в памяти ПК:

Числа-байты: 21, -6, 188
Числа-слова 21, -6, 288


Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для чего служат флаги переноса (CF) и переполнения мантиссы (OF). Изучить команды сложения и вычитания, допустимые типы операндов, устанавливаемые флаги.
Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом из табл. 5. Подобрать числовые значения таким образом, чтобы команды устанавливали различные флаги условий (OF,CF,ZF,SF); в каждом варианте – по крайней мере 3 различных флага. В комментариях к командам указать получаемые значения флагов.
В заданиях «массив байт» означает массив целых типа байт, а «массив слов» – массив целых типа слово.

Таблица 5:
А – массив из 4 байт. Выполнить сложение двух крайних и двух средних. Найти разность полученных промежуточных сумм. Результат поместить в BH.

Обсуждение

давно
Посетитель
7438
7205
21.06.2012, 19:14
общий
это ответ
Здравствуйте, Flawless!
1)
Числа-байты: 21, -6,188
Числа-слова 21, -6, 288

Числа-байты:
21 = 00010101b = 15h
-6 = 11111010b = 0fah
188 = 10111100b = 0bch
Обратите внимание, что число 188 можно рассматривать только, как беззнаковое число

Числа-слова:
21 = 00010101 00000000b = 1500h
-6 = 11111010 11111111b = 0faffh
288 = 00100000 00000001b = 2001h
Байты в двоичной записи, для наглядности, отделил пробелом

4)
[code h=200];Краткая справка по необходимым флагам
;OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей
; арифметической операции над числами со знаком выходит за допустимые для них пределы.
; Например, если при сложении двух положительных чисел получается число со старшим битом,
; равным единице (то есть отрицательное) и наоборот.
;CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции
; не уместился в приемнике и произошел перенос из старшего бита или если
; требуется заем (при вычитании), иначе устанавливается в 0.
; Например, после сложения слова 0FFFFh и 1, если регистр, в который надо
; поместить результат, — слово, в него будет записано 0000h и флаг CF = 1.
;ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль.
;SF — флаг знака. Этот флаг всегда равен старшему биту результата.

;А – массив из 4 байт. Выполнить сложение двух крайних и двух средних.
;Найти разность полученных промежуточных сумм. Результат поместить в BH

S SEGMENT STACK
DW 64 DUP(?)
S ENDS
D SEGMENT ; сегмент данных
; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ
A DB 0ffh,07fh,7fh,0ffh
D ENDS
C SEGMENT
ASSUME SS:S,CS:C,DS:D
Start PROC FAR
; Выполнение соглашений DOS и настройка регистра DS
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,D
MOV DS,AX

MOV BH,A ; BH = 0ffh
ADD BH,A+3 ; BH = 0ffh+0ffh = 0feh с переносом
; O=0, S=1, Z=0, C=1
MOV AL,A+1 ; AL = 7fh
ADD AL,A+2 ; AL = 7fh + 7fh = 0feh
; O=1, S=1, Z=0, C=0
SUB BH,AL ; BH = 0feh - 0feh = 0
; O=0, S=0, Z=1, C=0
; Возврат в DOS
RET

Start ENDP
C ENDS
END Start[/code]
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
21.06.2012, 19:38
общий
Мне вот интересно: Вы уже столько таких вопросов задали, что могли бы уже и разобраться, и другим решать...
Неужели так сложно?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
21.06.2012, 20:02
общий
Цитата: Лысков Игорь Витальевич
Мне вот интересно: Вы уже столько таких вопросов задали, что могли бы уже и разобраться, и другим решать...
Неужели так сложно?

Можно, но к сожалению щас времени нет и в следующем семестре Assembler не понадобится.
Форма ответа