Консультация № 72820
27.01.2007, 08:56
0.00 руб.
0 1 1
Здравствуйте!
Помогите пожалуйста ответить на следующие вопросы.

1)составьте программу для:
- определения однобайтовых элементов (директива DB) по имени FLDA, содержащего 28H, и по имени FLDB, содержащего 14h.
- определение двухбайтового элемента (директива DW) по имени FLDC, не имеющего значение.
- пересылки содержимого поля FLDA в регистр AL и сдвига на один бит.
- умножения содержимого регистра AL на значение в поле FLDB(MUL FLDB)
- пересылки результата из регистра AX в поле FLDC.

2) Определить таблицу, которая содержит имена дней недели, начиная с воскресенья.

3) Предполагая, что воскресенье равно 1 и что под каждое имя отведено по 11 символов, напишите команды прямого доступа к таблицеб, определённой в предыдущем вопросе.

Обсуждение

давно
Старший Модератор
31795
6196
29.01.2007, 12:30
общий
это ответ
Здравствуйте, Алексей Береев!
смотрите приложение
Удачи!

Приложение:
;1);определение переменных в сегменте данныхflda db 28hfldb db 14hfldc dw ?;сама программаmov al,flda;непонятно куда двигать бит;если влево(*2) то shl al,1;если вправо(/2) то shr al,1mul fldbmov fldc,ax;2);определение переменных в сегменте данныхweek db ‘воскресение‘;1 db ‘понедельник‘;2 db ‘вторник ‘;3 db ‘среда ‘;4 db ‘четверг ‘;5 db ‘пятница ‘;6 db ‘суббота ‘;7;3);сама программаmov cx,<текущий день>mov si,offset week;уже указывает на воскресениеdec cx;поэтому -1jcxz label_2;перход если воскресениеlabel_1: add si,11;считаем для текущего дняloop label_1label_2: mov cx,11;длина названия дня недели;в si находится аддрес текущего дня расчитанный по формуле; si=<начало таблицы>+<длина названия дня недели>*(<текущий день>-1)label_3:;команды могут любые так как нет точной постановки задачи;mov al,[si]/inc si или;ldsbloop label_3;повторить 11 раз для всех символов
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа