Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1521 | Дата выхода: | 14.06.2012, 21:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 89 / 37 | Вопросов / ответов: | 6 / 7 | Консультация # 186342: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Задание 3. Написать директивы описания данных и команды пересылок согласно указанному варианту из табл. 4. Если в... Консультация # 186343: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для ... Консультация # 186344: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Это задание будет состоять из подпунктов. Потому цена будет выше. Задание 5. Написать фрагмент программы на ас... Консультация # 186347: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Задание 3. Написать директивы описания данных и команды пересылок согласно указанному варианту из табл. 4. Если в... Консультация # 186348: Здра вствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для ... Консультация # 186349: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Это задание будет состоять из подпунктов. Потому цена будет выше. Задание 5. Написать фрагмент программы на ас... Консультация # 186342: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания.
Задание 3. Написать директивы описания данных и команды пересылок согласно указанному варианту из табл. 4. Если в задании не указано, как инициализировать данные, то предполагается, что инициализировать не надо. Под большим числом понимается число, для представления которого одного слова недостаточно. Следует, что размер операндов в команде пересылки должен совпадать – при необходимости использовать оператором указания типа PTR. При написании программного кода можно воспользоваться файлом с примером программы data_mov.asm Таблица 4:
 Дата отправки: 10.06.2012, 20:25 Вопрос задал: Flawless (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Flawless!
Код : ; Описание данных и пересылки S SEGMENT STACK DW 64 DUP(?) S ENDS D SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ F DB 5 dup (?) ; 3 байта неициированных данных H DD 0FAFBFEFFh ; в памяти будет в обратном порядке: FF FE FB FA K DB 4 dup ('*') ; 4 инициализированных байт L DW 20 DUP('1234') ; 20 инициализированных слов 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 ; напрямую не пересылается!!! ;a) MOV CH, K+3 ;б) MOV AX, L ;Непонятно, что значит некоторые значения в AX и DX MOV DX, L+2 ; Пусть будет так... ;в) MOV BYTE PTR H+3, DH ;пишем DH в на место самого старшего байта ;двойного слова H, а он хранится последним! MOV BYTE PTR H, DL ;пишем DL в на место самого младшего байта ;двойного слова H, а он хранится первым! ;г) MOV WORD PTR H+2, DX ;Н - двойное слово, поэтому надо написать WORD PTR MOV WORD PTR K+2, DX ;K - адрес байт, поэтому тоже надо написать WORD PTR ; Возврат в DOS RET Start ENDP C ENDS END Start  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 11.06.2012, 00:16 5 нет комментария ----- Дата оценки: 11.06.2012, 12:33 | Рейтинг ответа: 0 | Консультация # 186343: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания.
Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для чего служат флаги переноса (CF) и переполнения мантиссы (OF). Изучить команды сложения и вычитания, допустимые типы операндов, устанавливаемые флаги. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом из табл. 5. Подобрать числовые значения таким образом, чтобы команды устанавливали различные флаги условий (OF,CF,ZF,SF); в каждом варианте – по крайней мере 3 различных флага. В комментариях к командам указать получаемые значения флагов. В заданиях «массив байт» означает массив целых типа байт, а «массив слов» – массив целых типа слово.
Таблица 5: G – массив из 4 слов. Выполнить сложение двух средних и двух крайних. Найти разность полученных промежуточных сумм. Результат поместить в BX. Дата отправки: 10.06.2012, 20:30 Вопрос задал: Flawless (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Flawless!
Код : ;Краткая справка по необходимым флагам ;OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей ; арифметической операции над числами со знаком выходит за допустимые для них пределы. ; Например, если при сложении двух положительных чисел получается число со старшим битом, ; равным единице (то есть отрицательное) и наоборот. ;CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции ; не уместился в приемнике и произошел перенос из старшего бита или если ; требуется заем (при вычитании), иначе устанавливается в 0. ; Например, после сложения слова 0FFFFh и 1, если регистр, в который надо ; поместить результат, — слово, в него будет записано 0000h и флаг CF = 1. ;ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль. ;SF — флаг знака. Этот флаг всегда равен старшему биту результата. S SEGMENT STACK DW 64 DUP(?) S ENDS D SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ G DW 7fffh,0ffffh,0ffffh,7fffh 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+2 ; AX = 0ffffh ADD AX,G+4 ; AX = 0ffffh+0ffffh = 0fffeh с переносом ; O=0, S=1, Z=0, C=1 MOV BX,G ; BX = 7fffh ADD BX,G+6 ; 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  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 11.06.2012, 00:27 5 нет комментария ----- Дата оценки: 11.06.2012, 12:33 | Рейтинг ответа: 0 | Консультация # 186344: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания. Это задание будет состоять из подпунктов. Потому цена будет выше.
Задание 5. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом. Использовать операторы организации цикла и индексирование. Найти последний положительный элемент массива из 10 целых со знаком типа слово.
А так же. Оформить в виде процедур фрагмент программы из задания №5: 1. С передачей параметров через регистры. 2. Через стек. Дата отправки: 10.06.2012, 20:38 Вопрос задал: Flawless (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Flawless!
Код : ;Найти последний положительный элемент массива из 10 целых со знаком типа слово S SEGMENT STACK DW 64 DUP(?) S ENDS D SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ A DW -1234,2345,-3456,4567,5678,-6789,-8901,9012,0,-15234 COUNT EQU ($-A)/2 ; (текущий адрес($) - A) - длина массива в байтах ; поделив на 2 получим число слов в массиве D ENDS .186 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 ; напрямую не пересылается!!! ;передаем параметры через регистры LEA SI, A ;адрес массива в SI MOV CX, COUNT ;его длина CALL LastPositive1 ;проверяем, результат в регистре AX и С=0, С=1, если все отриц ;передаем параметры через стек PUSH COUNT ;передаем количество PUSH OFFSET A ;смещение массива CALL LastPositive2 ;проверяем, результат в регистре AX и С=0, С=1, если все отриц RET Start ENDP ;адрес массива в SI ;его длина ;результат в регистре AX и С=0, С=1, если все отриц LastPositive1 PROC MOV DX, -1 ;предыдущее значение (=-1 -> положительных нет) LOOP1: MOV AX, [SI] ;очередное слово массива ADD SI, 2 ;адрес следующего слова TEST AX, AX JLE NEXT1 ;если меньше или равно, то обходим MOV DX, AX ;сохраняем, как последнего положительного NEXT1: LOOP LOOP1 ;циклим по CX, пока не 0 MOV AX, DX ;результат в AX, AX=-1 если нет положительных чисел RET LastPositive1 ENDP ;параметры в стеке ;сначала передается дина массива ;затем адрес массива ;результат в регистре AX, если все отриц, то AX=-1 LastPositive2 PROC PUSH BP ;сохраним старое значение BP MOV BP, SP ;будем адресовать стековый кадр MOV SI, [BP+4] ;получим в стеке адрес массива MOV CX, [BP+6] ;количество LOOP2: MOV AX, [SI] ;очередное слово массива ADD SI, 2 ;адрес следующего слова TEST AX, AX JLE NEXT2 ;если меньше или равно, то обходим MOV DX, AX ;сохраняем, как последнего положительного NEXT2: LOOP LOOP2 ;циклим по CX, пока не 0 MOV AX, DX ;результат в AX, AX=-1 если нет положительных чисел POP BP ;восстановим старый BP RET 4 ;при возврате удалим из стека 4 байта (2 слова)! LastPositive2 ENDP C ENDS END Start  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 11.06.2012, 01:11 5 нет комментария ----- Дата оценки: 11.06.2012, 12:33 | Рейтинг ответа: 0 | Консультация # 186347: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания.
Задание 3. Написать директивы описания данных и команды пересылок согласно указанному варианту из табл. 4. Если в задании не указано, как инициализировать данные, то предполагается, что инициализировать не надо. Под большим числом понимается число, для представления которого одного слова недостаточно. Следует, что размер операндов в команде пересылки должен совпадать – при необходимости использовать оператором указания типа PTR. При написании программного кода можно воспользоваться файлом с примером программы data_mov.asm Таблица 4:
 Дата отправки: 11.06.2012, 12:37 Вопрос задал: Flawless (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Flawless!
Код : ; Описание данных и пересылки S SEGMENT STACK DW 64 DUP(?) S ENDS D SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ F DW 3 dup (?) ; 3 слова неициированных данных H DD 0FAFBFEFFh ; в памяти будет в обратном порядке: FF FE FB FA K DB '12345' ; 4 инициализированных байт L DW 8 DUP('55aah') ; 8 инициализированных слов 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 ; напрямую не пересылается!!! ;a) MOV CH, K+4 ;б) MOV AX, L MOV DX, L+2 ; произвольные значения ;в) MOV WORD PTR H+3, DX ;DL запишется в старший байт (последний) переменной H, а DH - в первый байт идущей следом K! MOV WORD PTR K+3, DX ;пишем DL на место 3 байта, DH - 4 байта (счет с 0) ;г) MOV WORD PTR H+2, DX ;в старшее слово, Н - двойное слово, идет вторым MOV WORD PTR H, AX ;в младшее ; Возврат в DOS RET Start ENDP C ENDS END Start Консультация # 186348: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Нужна помощь в решении задач по Операционным системам на ассемблере. Windows, какую версию используют PC в университете не знаю. Всего 4 задания.
Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для чего служат флаги переноса (CF) и переполнения мантиссы (OF). Изучить команды сложения и вычитания, допустимые типы операндов, устанавливаемые флаги. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом из табл. 5. Подобрать числовые значения таким образом, чтобы команды устанавливали различные флаги условий (OF,CF,ZF,SF); в каждом варианте – по крайней мере 3 различных флага. В комментариях к командам указать получаемые значения флагов. В заданиях «массив байт» означает массив целых типа байт, а «массив слов» – массив целых типа слово.
Таблица 5: Пусть M – массив из 4 слов. Вычислите сумму элементов массива и результат поместите в DX. Дата отправки: 11.06.2012, 12:41 Вопрос задал: Flawless (Посетитель) Всего ответов: 2 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Flawless!
Код : ;Краткая справка по необходимым флагам ;OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей ; арифметической операции над числами со знаком выходит за допустимые для них пределы. ; Например, если при сложении двух положительных чисел получается число со старшим битом, ; равным единице (то есть отрицательное) и наоборот. ;CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции ; не уместился в приемнике и произошел перенос из старшего бита или если ; требуется заем (при вычитании), иначе устанавливается в 0. ; Например, после сложения слова 0FFFFh и 1, если регистр, в который надо ; поместить результат, — слово, в него будет записано 0000h и флаг CF = 1. ;ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль. ;SF — флаг знака. Этот флаг всегда равен старшему биту результата. ;Пусть M – массив из 4 слов. Вычислите сумму элементов массива и результат поместите в DX S SEGMENT STACK DW 64 DUP(?) S ENDS D SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ M DW 7fffh,0ffffh,0003h,07fffh 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,M ; AX = 7fffh ADD AX,M+2 ; AX = 7fffh+0ffffh = 7ffeh с переносом ; O=0, S=0, Z=0, C=1 ADD AX,M+4 ; AX = 7ffeh+0003h = 8001h ; O=1, S=1, Z=0, C=0 ADD AX,M+6 ; AX = 8001 + 7fffh = 0 ; O=0, S=0, Z=1, C=1 MOV DX,AX ; Возврат в DOS RET Start ENDP C ENDS END Start Консультирует Andriana (4-й класс): Здравствуйте, Flawless! описание сложения и вычитания а также описание флагов в файле скачать файл teorique.rtf [400.9 кб] удачи
Приложение:
|
Комментариев нет:
Отправить комментарий