WMmail.ru - сервис почтовых рассылок

четверг, 21 июня 2012 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Скидка 15% на Office 2010 Standard Скидка 15% на Office 2010 Standard
по программам лицензирования Open License и Open License Government

  Adobe Photoshop Elements со скидкой 33%! Adobe Photoshop Elements со скидкой 33%!
С помощью Photoshop Elements вы сможете сделать ваши впечатления еще ярче!

  Спутниковая сигнализация Спутниковая сигнализация
Круглосуточный контроль! Скидки на КАСКО до 80%!

 
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

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

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

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

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

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

Номер выпуска:1524
Дата выхода:21.06.2012, 14:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:91 / 36
Вопросов / ответов:3 / 3

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


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

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

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

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

Числа-байты: 42, -42, 111
Числа-слова 42, -42, 511

Задание 3. Написать директивы описания данных и команды пересылок согласно указанному варианту из табл. 4. Если в задании не указано, как инициализировать данные, то предполагается, что инициализировать не надо. Под большим числом понимается число, для представления которого одного слова недостаточно. Следует, что размер операндов в команде пересылки должен совпадать – при необходимости использовать оператором указания типа PTR. При написании программного кода можно воспользоваться файлом с пример ом программы data_mov.asm
Таблица 4:

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


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

Здравствуйте, Flawless!
Задание 1:
Числа-байты:
42 = 00101010b = 2ah
-42 = 11010110b = 0d6h
111 = 01101111b = 6fh

Числа-слова:
42 = 00101010 00000000b = 2a00h
-42 = 11100011 11111111b = 0d6ffh
511 = 11111111 00000001b = 0ff01h

Байты в двоичной записи, для наглядности, отделил пробелом

Задание 3:

Код :
; Описание данных и пересылки S SEGMENT STACK   DW      64 DUP(?) S ENDS Data   SEGMENT         ; сегмент данных             ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ F   DB   4 dup (?)       ; 4 байта неициированных данных H   DD   12345678h K   DW   5 dup (4477h)   ; 4 инициализированных слов L   DB   ' ,.;:?!'       ; 7 знаков препинания Data    ENDS Code    SEGMENT          ASSUME  SS:S,CS:Code,DS:Data Start   PROC    FAR  ; Выполнение соглашений DOS и настройка регистра DS           PUSH DS                  SUB  AX,AX               PUSH AX                  MOV  AX,Data      ; инициируем сегментный регистр    MOV  DS,AX ;a)    MOV   SI, WORD PTR H+2 ;старшее слово идет вторым    MOV   DI, WORD PTR H   ;младшее слово идет первым ;б)    MOV   CH, BYTE PTR K+2 ;третий байт в массиве К по смещению 2 ;в)    MOV   AX, 54F8h ;г)    MOV   WORD PTR H, BP ;конец H - младшее слово - лежит первым!    MOV   K+8, SI        ;конец K - последнее слово находится по смещению 8 от начала ; Возврат в DOS               RET                       Start   ENDP     Code   ENDS                        END   Start

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

5
нет комментария
-----
Дата оценки: 18.06.2012, 08:30

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

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

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

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

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

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


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

Здравствуйте, Flawless!

Код :
;Краткая справка по необходимым флагам ;OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей  ;     арифметической операции над числами со знаком выходит за допустимые для них пределы.  ;     Например, если при сложении двух положительных чисел получается число со старшим битом,  ;     равным единице (то есть отрицательное) и наоборот. ;CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции  ;     не уместился в приемнике и произошел перенос из старшего бита или если  ;     требуется заем (при вычитании), иначе устанавливается в 0.  ;     Например, после сложения слова 0FFFFh и 1, если регистр, в который надо  ;     поместить результат, — слово, в него будет записано 0000h и флаг CF = 1.  ;ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль.  ;SF — флаг знака. Этот флаг всегда равен старшему биту результата.   ;G – массив из 4 слов. Выполнить сложение двух средних и двух крайних.  ;Найти разность полученных промежуточных сумм. Результат поместить в BX  S SEGMENT STACK   DW      64 DUP(?) S ENDS D   SEGMENT         ; сегмент данных             ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ G   DW   0ffffh,07fffh,7fffh,0ffffh 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      ; D - непосредственный операнд, в сегментный регистр     MOV   DS,AX     ; напрямую не пересылается!!!     MOV   AX,G      ; AX = 0ffffh    ADD   AX,G+6    ; AX = 0ffffh+0ffffh = 0fffeh с переносом             ; O=0, S=1, Z=0, C=1    MOV   BX,G+2    ; BX = 7fffh    ADD   BX,G+4    ; BX = 7fffh + 7fffh = 0fffeh             ; O=1, S=1, Z=0, C=0    SUB   BX,AX     ; BX = 0fffeh - 0fffeh = 0             ; O=0, S=0, Z=1, C=0 ; Возврат в DOS               RET                       Start   ENDP     C   ENDS                        END   Start

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

5
нет комментария
-----
Дата оценки: 18.06.2012, 08:31

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

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

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

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере.
Задание 5. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом. Использовать операторы организации цикла и индексирование.
Поменять местами соседние (первый со вторым, третий с четвертым и т.д.) элементы массива 10 целых без знака типа байт.
А так же. Оформить в виде процедур фрагмент программы из задания №5:
1. С передачей параметров через регистры.
2. Через стек.

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


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

Здравствуйте, Flawless!
5)

Код :
;Поменять местами соседние (первый со вторым, третий с четвертым и т.д.)  ;элементы массива 10 целых без знака типа байт SStack  SEGMENT STACK   DW    64 DUP(?) SStack  ENDS Data    SEGMENT         ; сегмент данных ar   db   2,4,0,40,50,0,255,40,40,10 Data    ENDS Code    SEGMENT          ASSUME  SS:SStack,CS:Code,DS:Data Start   PROC    FAR  ; Выполнение соглашений DOS и настройка регистра DS           PUSH   DS                  SUB   AX, AX               PUSH  AX                  MOV   AX, Data    MOV   DS, AX     LEA   SI, ar    ;адрес массива    MOV   CX, 5     ;число пар элементов массива CH_LOOP:           ;цикл    MOV   AX, [SI]  ;читаем слово, по два элемента    xchg  AL, AH    MOV   [SI], AX    INC   SI        ;на следующее слово    INC   SI    LOOP  CH_LOOP   ;циклим по CX     RET Start   ENDP     Code    ENDS                        END  Start

6,7)
Код :
;Поменять местами соседние (первый со вторым, третий с четвертым и т.д.)  ;элементы массива 10 целых без знака типа байт SStack  SEGMENT STACK   DW    64 DUP(?) SStack  ENDS Data    SEGMENT         ; сегмент данных ar   db   2,4,0,40,50,0,255,40,40,10 Data    ENDS 	.186 Code    SEGMENT          ASSUME  SS:SStack,CS:Code,DS:Data Start   PROC    FAR  ; Выполнение соглашений DOS и настройка регистра DS           PUSH   DS                  SUB   AX, AX               PUSH  AX                  MOV   AX, Data    MOV   DS, AX     LEA   SI, ar    ;адрес массива    MOV   CX, 5     ;число пар элементов массива    CALL  CHANGE1     PUSH  OFFSET ar    PUSH  5    CALL  CHANGE2     RET Start   ENDP      CHANGE1	 PROC CH_LOOP1:          ;цикл    MOV   AX, [SI]  ;читаем слово    xchg  AL, AH    MOV   [SI], AX    INC   SI        ;на следующее слово    INC   SI    LOOP  CH_LOOP1  ;циклим по CX    RET CHANGE1  ENDP  CHANGE2	 PROC    PUSH  BP    MOV   BP, SP    MOV   CX, [BP+4];число пар элементов    MOV   SI, [BP+6];адрес массива  CH_LOOP2:          ;цикл    MOV   AX, [SI]  ;читаем слово    xchg  AL, AH    MOV   [SI], AX    INC   SI        ;на следующее слово    INC   SI    LOOP  CH_LOOP2  ;циклим по CX     POP   BP    RET CHANGE2  ENDP  Code    ENDS                        END  Start

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

5
нет комментария
-----
Дата оценки: 18.06.2012, 08:33

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

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


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

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

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


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    20 июня 2012, 14:02
RFpro.ru: Ассемблер? Это просто! Учимся программировать    15 июня 2012, 21:32
RFpro.ru: Ассемблер? Это просто! Учимся программировать    14 июня 2012, 21:02

Все выпуски рассылки

21 июня 2012 отмечают:
День кинологических подразделений МВД России (День кинолога)
Международный день скейтбординга
День коренных жителей Канады
День музыки во Франции
Ратха-Ятра в Индии

Именины: Василий, Павел, Федор
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Как бесплатно создать блог
Еженедельные новости сайта ВКЛЮЧИСЬ.RU
Подписчиков: 3
  Новости Шоу-Бизнеса от NewsProject.Ru
Самые последние и интересные новости ШОУ-БИЗНЕСА. NewsProject.ru - информирован, значит вооружён!
Подписчиков: 138
  Новости сайта Yanakayevs.Narod.Ru
Рассылка новостей сайта Yanakayevs.Narod.Ru, а так же краткое описание новых статей на сайте.
Подписчиков: 86
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий