Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1526 | Дата выхода: | 23.06.2012, 15:30 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 91 / 35 | Вопросов / ответов: | 1 / 1 | Консультация # 186394: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для чего служат флаги переноса (CF) и переполнения мантиссы (OF). Изучить команды сложения и вычитания, допустимые типы операндов, устанавливаемые флаги. Написать фрагмент программы ... Консультация # 186394: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Задание 4. Изучить особенности сложения и вычитания целых чисел в ПК (беззнаковых и со знаком). Разобраться, для чего служат флаги переноса (CF) и переполнения мантиссы (OF). Изучить команды сложения и вычитания, допустимые типы операндов, устанавливаемые флаги. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом из табл. 5. Подобрать числовые значения таким образом, чтобы команды устанавливали различные флаги условий (OF,CF,ZF,SF); в каждом варианте – по крайней мере 3 различных флага. В комментариях к командам указать получаемые значения флагов.
Вариант задания
F – массив 5 слов. Вычтите из среднего числа сумму остальных. Результат поместить в ВX.
Задание 5. Написать фрагмент программы на ассемблере (описание переменных и команды вычислений) в соответствии с указанным вариантом. Использовать операторы организации ци кла и индексирование.
Вариант задания
В последовательные 10 байт памяти поместить коды цифр от ‘0’ до ‘9’. Выполнить размещение не в директиве описания данных, а программно. А так же. Оформить в виде процедур фрагмент программы : 1. С передачей параметров через регистры. 2. Через стек.
Дата отправки: 19.06.2012, 22:24 Вопрос задал: Igordrum (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Igordrum! 4)
Код : ;Краткая справка по необходимым флагам ;OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей ; арифметической операции над числами со знаком выходит за допустимые для них пределы. ; Например, если при сложении двух положительных чисел получается число со старшим битом, ; равным единице (то есть отрицательное) и наоборот. ;CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции ; не уместился в приемнике и произошел перенос из старшего бита или если ; требуется заем (при вычитании), иначе устанавливается в 0. ; Например, после сложения слова 0FFFFh и 1, если регистр, в который надо ; поместить результат, — слово, в него будет записано 0000h и флаг CF = 1. ;ZF — флаг нуля. Устанавливается в 1, если результат предыдущей команды — ноль. ;SF — флаг знака. Этот флаг всегда равен старшему биту результата. ;F – массив 5 слов. Вычтите из среднего числа сумму остальных. ;Результат поместить в ВX SSEG SEGMENT STACK DW 64 DUP(?) SSEG ENDS DSEG SEGMENT ; сегмент данных ; ДИРЕКТИВЫ ОПИСАНИЯ ДАННЫХ F DW 0002h,7fffh,0ffffh,8000h,0fffeh DSEG ENDS CSEG SEGMENT ASSUME SS:SSEG,CS:CSEG,DS:DSEG Start PROC FAR ; Выполнение соглашений DOS и настройка регистра DS PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV AX,F ; AX = 0002h ADD AX,F+2 ; AX = 0002h+07fffh = 8001h ; O=1, S=1, Z=0, C=0 ADD AX,F+6 ; AX = 8001h+8000h = 0001h ; O=1, S=0, Z=0, C=1 ADD AX,F+8 ; AX = 0001h+0fffeh = 0ffffh ; O=0, S=1, Z=0, C=0 MOV BX,F+4 ; BX = 0ffffh SUB BX,AX ; BX = 0ffffh - 0ffffh = 0 ; O=0, S=0, Z=1, C=0 ; Возврат в DOS RET Start ENDP CSEG ENDS END Start 5)
Код : ;В последовательные 10 байт памяти поместить коды цифр от ‘0’ до ‘9’. ;Выполнить размещение не в директиве описания данных, а программно. SSEG SEGMENT STACK DW 64 DUP(?) SSEG ENDS COUNT EQU 10 DSEG SEGMENT ; сегмент данных NUMS DB COUNT dup(?) DSEG ENDS .186 CSEG SEGMENT ASSUME SS:SSEG,CS:CSEG,DS:DSEG Start PROC FAR ; Выполнение соглашений DOS и настройка регистра DS PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX LEA SI,NUMS MOV CX,COUNT MOV AL,'0' FORM_NUM_LOOP: MOV [si],AL INC SI INC AL LOOP FORM_NUM_LOOP RET Start ENDP CSEG ENDS END Start В виде процедур:
Код : ;В последовательные 10 байт памяти поместить коды цифр от ‘0’ до ‘9’. ;Выполнить размещение не в директиве описания данных, а программно. SSEG SEGMENT STACK DW 64 DUP(?) SSEG ENDS COUNT EQU 10 DSEG SEGMENT ; сегмент данных NUMS DB COUNT dup(?) DSEG ENDS .186 ;необходимо, чтобы в стек засылать число CSEG SEGMENT ASSUME SS:SSEG,CS:CSEG,DS:DSEG Start PROC FAR ; Выполнение соглашений DOS и настройка регистра DS PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX LEA SI,NUMS ;в регистрах MOV CX,COUNT CALL FORM1 PUSH OFFSET NUMS;через стек PUSH COUNT CALL FORM2 RET Start ENDP FORM1 PROC MOV AL,'0' FORM_NUM_LOOP1: MOV [SI],AL INC SI INC AL LOOP FORM_NUM_LOOP1 RET FORM1 ENDP FORM2 PROC PUSH BP ;сохраним старое значение BP MOV BP, SP ;будем адресовать стековый кадр MOV CX, [BP+4] ;длина массива MOV SI, [BP+6] ;адрес массива MOV AL,'0' FORM_NUM_LOOP2: MOV [SI],AL INC SI INC AL LOOP FORM_NUM_LOOP2 POP BP ;восстановим старый BP RET 4 ;при возврате удалим из стека 4 байта (2 слова)! FORM2 ENDP CSEG ENDS END Start
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий