TASK_ASM (1000388)
Текст из файла
1. ОПИСАНИЕ ДАННЫХ. ПЕРЕСЫЛКИ.
1.1 Для каждой из указанных директив выписать эквивалентную ей директиву, где начальное значение переменной записано в 16-ричном виде.
а) A DB 17 б) B DB 15 в) V DB 255 г) G DB 150
д) D DB -17 е) E DB -1 ж) J DB -106 з) Z DB -128
и) I DW 17 к) K DW -17 л) L DW -1 м) M DW 256
1.2 Для каждой из указанных директив выписать две эквивалентные ей директивы, в первой из которых начальное значение переменной записано в виде десятичного числа со знаком, а во второй - без знака.
а) A DB 0Ah б) B DB 0A5h в) V DB 7Fh г) G DB 80h
д) D DB 101b е) E DW 0FFFEh ж) J DW 7Fh з) Z DW 80h
1.3 A DW 1020h
B DD 10203040h
Указать в 16-ричном виде значения байтов с адресами: A и A+1; B, B+1, B+2 и B+3.
1.4 Описать переменную D размером в двойное слово с начальным значением 216.
1.5 Записать более простым способом директиву
C DB '5'+1
1.6 Описать переменную-слово X, начальным значением которой является:
а) адрес этой же переменной;
б) адрес следующего слова памяти;
в) адрес предыдущего слова памяти.
1.7 A DB 0,1,2
B DB 3,4,5,6
Указать значения байтов с адресами: A+1, B+2, A+4 и B-1.
1.8 Описать байтовый массив PRIM из 7 элементов, начальными значениями которых являются первые семь простых чисел (2, 3, 5 и т.д.).
1.9 Выписать все возможные варианты (кроме тех, где указываются коды букв) описания символьного массива S, начальными значениями элементов которого являются первые три большие буквы русского алфавита.
1.10 Описать массив X из 85 элементов-слов со следующими начальными значениями:
а) первые 40 элементов имеют значение 10, следующие 20 элементов - значение '*', остальные - без начального значения;
б) средний элемент имеет значение 1, а все остальные - значение 0.
1.11 Описать байтовую матрицу M размера 30x50, в каждой строке которой первые 47 элементов имеют значение -1, а последние три - значение 'q'.
1.12 S DB 'ABCD'
W DW 10 DUP(?)
Указать значения выражений TYPE S и TYPE W.
1.13 K EQU 90
X DB K+10 DUP((K+9)/3 DUP(?))
Сколько всего байтов занимает массив X?
1.14 N EQU 30
Описать байтовую единичную матрицу E размера NxN.
1.15 Воспользоваться подходящей директивой EQU и предложить более короткий вариант записи директивы
S DB "abcdefhg=abcdef+k"
1.16 Указать начальные значения элементов массивов X и Y:
A=10
B=A
C EQU A
D EQU +A
X DB A, B, C, D
A=2*A
Y DB A, B, C, D
1.17 N EQU 10
X DB ?
Y DW ?
Разделить следующие конструкции на три группы: 1) на константные выражения, 2) на адресные выражения и 3) на неправильные выражения.
а) Y+Y-X б) Y+(Y-X) в) (X-Y)/2 г) X-Y/2
д) Y-N е) N-Y ж) 2*N+1 з) 2*X+1
Замечание. В упражнениях 1.18-1.22 требуется выписать команды, решающие указанные задачи.
1.18 A DB 3 DUP(?)
Рассматривая эту переменную как массив A[1..3]:
а) присвоить A[1]:=1, A[2]:=2, A[3]:=3;
б) циклически сдвинуть на 1 позицию влево элементы массива A.
1.19 A DW ?,?
B DW ?,?
X DD ?
Y DD ?
Переменной A присвоить значение (два слова) переменной B, а переменной X - значение переменной Y.
1.20 Q DD ?
Переменной Q присвоить значение 75535. (Вспомогательные переменные не использовать.)
1.21 X DB ?
Y DB ?
Поменять местами значения переменных X и Y.
1.22 Z DW ?
Поменять местами байты слова Z.
1.23 A DW -73
B DW ?
Указать в 16-ричном виде значение переменной B после выполнения следующих команд:
MOV AX,A
MOV BYTE PTR B,AH
MOV BYTE PTR B+1,AL
1.24 B DB ?
W DW ?
Среди перечисленных команд указать те, что записаны с ошибкой.
а) MOV BP,SP б) MOV AX,BL в) MOV DX,'*' г) MOV CH,500
д) MOV BX,B е) MOV SI,W+1 ж) MOV W,SI+1 з) MOV B,BYTE PTR CX
и) MOV B,80h к) MOV B,W-B л) MOV B,-130 м) MOV W,W+2
н) XCHG AH,AL о) XCHG W,CX п) XCHG B,B+1 р) XCHG W,15
2. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ.
2.1 Указать значения регистра AL (в виде десятичного числа без знака) и флагов CF и ZF после выполнения следующей пары команд:
а) MOV AL,100 б) MOV AL,100 в) MOV AL,100 г) MOV AL,100
ADD AL,100 ADD AL,156 SUB AL,90 SUB AL,190
2.2 Указать значения регистров AH и AL (в виде десятичных чисел без знака) и флагов CF и ZF после выполнения следующих команд:
а) MOV AH,0 б) MOV AH,0 в) MOV AH,255 г) MOV AH,20
MOV AL,160 MOV AL,160 MOV AL,255 MOV AL,10
ADD AL,60 ADD AL,160 ADD AL,1 SUB AL,16
ADC AH,3 ADC AH,3 ADC AH,0 SBB AH,0
2.3 Указать значения регистра BH (в виде десятичного числа со знаком) и флагов OF и SF после выполнения следующей пары команд:
а) MOV BH,80 б) MOV BH,80 в) MOV BH,-80 г) MOV BH,-80
ADD BH,40 ADD BH,50 ADD BH,-40 ADD BH,-50
д) MOV BH,80 е) MOV BH,-80 ж) MOV BH,80 з) MOV BH,-80
ADD BH,-40 ADD BH,40 SUB BH,100 SUB BH,50
2.4 Указать значения регистра CL (в виде как знакового, так и беззнакового десятичных чисел) и флагов CF, OF, SF и ZF после выполнения следующей пары команд:
а) MOV CL,128 б) MOV CL,-10 в) MOV CL,246 г) MOV CL,40
ADD CL,128 ADD CL,-40 ADD CL,216 SUB CL,100
2.5 Указать исходное значение регистра AL (любое из возможных), при котором после выполнения команды ADD AL,2 флаги имели бы следующие значения:
а) CF=1, OF=0, SF=0 б) CF=0, OF=1, SF=1
2.6 Доказать следующие утверждения:
а) Если операнды команды ADD интерпретировать как знаковые числа, то флаг OF получает в этой команде значение 1 тогда и только тогда, когда эти числа имеют один и тот же знак, а у результата команды - иной знак.
б) Если операнды команды SUB x,y интерпретируются как знаковые числа и x<y, то после выполнения этой команды флаги OF и SF обязательно будут иметь разные значения (OFSF).
в) После выполнения команды ADD флаги никогда не будут иметь следующие значения:
в1) CF=OF=SF=1; в2) CF=0, OF=1, SF=0;
г) После выполнения команды SUB возможны следующие значения флагов: CF=OF=SF=1.
2.7 X DB ?
Требуется записать в регистр CL значение переменной X, увеличенное на 2. Определить, какой из следующих двух фрагментов правильно решает эту задачу:
а) MOV CL,X б) MOV CL,X+2
ADD CL,2
2.8 Пусть в регистре BH находится код какой-то большой латинской буквы и требуется записать в этот регистр код одноименной малой латинской буквы. Определить, какой из следующих фрагментов правильно решает эту задачу:
а) SUB BH,'A' б) ADD BH,'a'-'A' в) MOV BH,BH-'A'+'a'
ADD BH,'a'
2.9 A EQU 7
X DB ? ; 0X80
Реализовать наименьшим числом команд следующее присваивание:
а) X:=3*X б) X:=2*(A+X)+6
2.10 Указать (в 16-ричном виде) значение регистра AX после выполнения следующих команд:
а) MOV AL,80h б) MOV AL,80h в) MOV AL,7Fh г) MOV AL,80h
MOV BL,2 MOV BL,2 CBW CBW
MUL BL IMUL BL
Замечание. В упражнениях 2.11-2.20 требуется выписать команды, решающие указанную задачу.
2.11 A DB ?
B DW ?
Записать в B число, равное по величине числу из A, при условии, что:
а) A - число без знака;
б) A - число со знаком.
2.12 N DB ? ; число без знака
K DW ?
Вычислить: K=N*(N+1)/2
2.13 A DW ? ; число со знаком
B DW ?
Вычислить: B=(A div 1000) * (A mod 1000)
2.14 Пусть A, B, C и X - знаковые байтовые переменные, а Y - переменная типа DWORD. Вычислить: Y=A*X2+B*X+C
2.15 N DW ? ; 1N365
WD DB ?
Записать в WD номер дня недели (1 - понедельник, ..., 7 - воскресенье), на который приходится N-й день года, считая, что 1 января этого года - понедельник.
2.16 Пусть H, M и S - байтовые переменные, а T - переменная типа DWORD. Считая, что от начала суток прошло H часов (0H<24), M минут и S секунд (0M,S<60), определить, сколько всего секунд прошло от начала суток к этому моменту времени. Ответ записать в T.
2.17 Пусть T - переменная размером в двойное слово, а H, M и S - байтовые переменные. Считая, что прошло T секунд (0T<86400) от начала суток, определить, сколько полных часов (H), минут (M) и секунд (S) прошло к этому моменту времени.
2.18 Пусть D1, D2 и N - байтовые переменные. Считая, что значения D1 и D2 - это символы-цифры (от "0" до "9"), записать в N число, десятичная запись которого составлена из этих цифр (D1 - левая цифра).
2.19 N DW ? ; 100N999
Записать в N число, полученное выписыванием в обратном порядке десятичных цифр исходного числа из N (например, 125 521).
2.20 X DD ?
Y DD ?
Z DD ?
W DD ?,?
Реализовать следующие операции над "длинными" числами:
а) Z=X+Y (считать, что сумма укладывается в двойное слово);
б) Z=X-Y (считать XY);
в) W=X*Y (считать X и Y беззнаковыми числами).
2.21 A DB ?
B DW ?
Среди перечисленных команд указать те, что записаны с ошибкой:
а) ADD BX,'*' б) SUB AL,400 в) ADC BH,BL г) SBB AX,BL
д) ADD BX,B е) SUB CX,A ж) ADC B,'B' з) SUB A,BYTE PTR B
и) CBW AL к) MUL AL л) DIV 100 м) DEC A+1
3. ПЕРЕХОДЫ. ЦИКЛЫ. ВВОД-ВЫВОД.
3.1 X DB 206 ; (-50)
Определить, будет ли сделан переход на метку MET при выполнении следующих команд:
а) CMP X,210 б) CMP X,210 в) CMP X,-40 г) CMP X,-40 д) CMP X,216
JA MET JE LAB JG MET JL MET JL MET
JB MET
3.2 X DW ? ; число со знаком
Определить, какой из следующих фрагментов правильно реализует оператор
if X>80 then X:=X-1 else X:=X+1
а) CMP X,80 б) CMP X,80 в) CMP X,80 г) CMP X,80
JLE M JG M JLE M JNG M
DEC X DEC X DEC X DEC X
M: INC X JMP L JMP L JMP L
M: INC X M: INC X M: INC X
L: L: L:
3.3 Упростить (записать меньшим числом команд) следующий фрагмент:
а) CMP AH,0 б) CMP AH,0 в) L: ADD AX,AX г) L: ADD AX,AX
JE M JL M1 DEC BX DEC CX
JG M JMP M CMP BX,0 CMP CX,0
NEG AH M1: NEG AH JE M JNE L
M: M: JMP L
M:
3.4 Пусть X и Y - знаковые байтовые переменные, а L - метка. Реализовать следующие условные переходы:
а) if (X>2) or (Y<10) then goto L;
б) if (X>2) and (Y<10) then goto L
3.5 Пусть X, Y, Z и W - знаковые переменные-слова. Реализовать следующее присваивание:
а) Y:=abs(X) б) Z:=min(X,Y) в) W:=max(X+10,2*Y,8-Z)
3.6 В регистре BL находится число от 0 до 15. Записать в BL код соответствующей шестнадцатиричной цифры как символа (в качестве "буквенных" цифр использовать большие латинские буквы от 'A' до 'F').
3.7 X DD ?
Y DD ?
Рассматривая значения X и Y как беззнаковые числа, реализовать условный переход на метку LESS, если X<Y.
3.8 N DW ? ; 0N999
Определить, содержит ли десятичная запись числа N цифру 5. Ответ - 1 (содержит) или 0 - записать в регистр DL.
3.9 Пусть Y - переменная-слово со значением от 1 до 2100. Определить, является ли год Y високосным, и в регистр CL записать 1, если является, и 0 в противном случае. (По "новому стилю" високосными считаются года, кратные 4, однако из всех годов, кратных 100, високосными являются лишь кратные 400: 1700, 1800 и 1900 - невисокосные, 2000 - високосный).
3.10 Пусть H, M и S - байтовые переменные, причем 0H<24, 0M,S<60. Рассматривая H, M и S соответственно как число полных часов, минут и секунд, прошедших к некоторому моменту суток, присвоить этим переменным значения, соответствующие моменту, на 1 секунду большему. (Учесть смену суток.)
3.11 Пусть A, B и C - знаковые переменные-слова. Записать в регистр DL значение 3, 2, 1 или 0 в зависимости от того, может ли существовать треугольник с такими длинами сторон (и если да, то какого он вида - равносторонний (3), равнобедренный (2) или какой-то иной (1)) или не может (0).
3.12 Пусть N - переменная-слово (N1), а K - переменная-байт. Определить, является ли N степенью числа 3 (1, 3, 9, 27, ...). Если является, то в K записать показатель степени (N=3k), не является - записать -1.
3.13 N DB ? ; N≥1
F DW ?
Записать в F:
а) N-е число Фибоначчи (FN);
б) первое из чисел Фибоначчи, превосходящих 10000.
(Определение чисел Фибоначчи Fk: F0=F1=1, Fk=Fk-1+Fk-2.)
3.14 Пусть N и K - переменные-слова и 2<K<N. Записать в регистр BX наибольший из остатков от деления N на числа 2, 3, ..., K.
3.15 N DW ? ; N≥0
Записать в регистр CL:
а) наибольшую цифру из десятичной записи числа N;
б) количество значащих цифр из десятичной записи числа N;
в) сумму цифр из десятичной записи числа N.
3.16 X DD ? ; X≥0
Записать в регистр CL старшую (левую) значащую цифру из десятичной записи числа X.
3.17 N DW ? ; N>1
Определить, является ли N простым числом. Ответ - 1 (да) или 0 - записать в регистр BL.
3.18 N DW ? ; N>1
Записать в регистр BL количество различных простых делителей числа N.
3.19 Z DB ?
Записать в Z максимальное значение выражения (X2+Y2) mod 80 в целочисленных точках квадрата 0≤X≤99, 0≤Y≤99.
3.20 R DB ? ; 0<R<150
Записать в регистр DX количество целочисленных точек на плоскости, попадающих в круг радиуса R с центром в начале координат.
Замечание. В упражнениях 3.21-3.32 решение задачи описать в виде фрагмента программы с вводом-выводом, используя вспомогательные операции INCH, ININT, FLUSH, OUTCH, OUTINT, OUTWORD, OUTSTR и NEWLINE. Считать, что все вводимые числа "укладываются" в размер слова.
3.21 Дана последовательность из 130 попарно различных знаковых чисел. Определить наибольшее из них и его порядковый номер в последовательности.
3.22 Дана последовательность символов (отличных от точки), за которой следует точка. Определить, сбалансирована ли эта последовательность по круглым скобкам. Ответ: ДА или НЕТ.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.