Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10968
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4364
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2261
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1527
Дата выхода:24.06.2012, 19:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:91 / 34
Вопросов / ответов:1 / 1

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

Консультация # 186404:

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

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

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


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

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

Дата отправки: 21.06.2012, 18:52
Вопрос задал: Flawless (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, 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)

Код :
;Краткая справка по необходимым флагам
;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

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 21.06.2012, 19:14

5
нет комментария
-----
Дата оценки: 21.06.2012, 20:01

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное