
3. Порядок выполнения работы
Написать программу на ассемблере, выполняющую арифметические
операции над целочисленными данными согласно заданиям, приведенным ниже. Общие требования:
--вид буфера для хранения массива и адресация в нем выбирается
самостоятельно;
--числовые данные вводятся с клавиатуры в виде строк символов (по
умолчанию используется 10 с/c), при этом производится проверка на
переполнение (по умолчанию на знаковые 16 битные данные);
--константы задать с помощью директивы EQU;
--вычисления проверять на возникновение ошибок и переполнений;
--старт программы, ввод-вывод данных и обработку ошибок оформлять
выводом в консоли поясняющих строк.
Задание:
|
Вычислить значения выражений. Все величины в выражении однобайтовые. Результат выдать на экран. |
Вычислить значения выражений. Все величины в выражении однобайтовые. Результат выдать на экран. Если задать величины x, y, z.
|
1. |
41X2+4Y2+2М2 |
2*z+x*y+15*y*z+3 x=1, y=2, z=3 |
2. |
5X2+5Y2+5М2 |
z+x*y-11*x*z+11 x=2, y=4, z=6 |
3. |
4X2+21Y2+9М2 |
3*x+x*z-17*y*z+30 x=3, y=9, z=27 |
4. |
3X2+35Y2+33М2 |
9*z+3*x*y-15*x*y*z+33 x=4, y=8, z=16 |
5. |
X2+8Y2+4М2 |
2*y+x*z-5*x*y*z-20 x=1, y=8, z=4 |
6. |
4X2+8Y2+8М2 |
5*z+x*y-35*x*z-90 x=4, y=8, z=8 |
7. |
11X2+22Y2+33М2 |
7*x+x^2-15*y*z+75 x=11, y=22, z=33 |
8. |
1X2+2Y2+3М2 |
5*y+z*y-4*x*z+24 x=1, y=4, z=2 |
9. |
4X2+5Y2+6М2 |
15*z-x*y+21*x*y*z+100 x=1, y=2, z=3 |
10. |
10X2+5Y2+2М2 |
8*y+x*z+99*x-y*z-100 x=2, y=4, z=6 |
11. |
24X2+18Y2+М2 |
x+x*z-73*y*z-7 x=3, y=9, z=27 |
12. |
2X2+4Y2+8М2 |
16*y+x*z-15*x*z+40 x=4, y=8, z=16 |
13. |
8X2+9Y2+21М2 |
9*z+8*x*y+5*x*z+70 x=1, y=8, z=4 |
Вычислить выражение 18*z*x*y-15*x*y*z+30+19*(x-y). Если задать величины x, y, z=1, то ответ? Все величины в выражении однобайтовые. Результат выдать на экран. Программа № 2 (образец) format PE GUI 4.0 include 'include\WIN32AX.INC' .data formath db "%0lx",0 ; Задание формата вывода 16 formatd db "%0d",0 ; Задание формата вывода 10 result db 256 dup(?) ;В этой строке сохраняется результат ;после его преобразования x db 2 ; 20h y db 2 ; 40h z db 2 ; 50h ; 18*z*x*y-15*x*y*z+30+19*(x-y)= , если ;x=y=z=1 c db 7 .code start: xor AX,AX xor dX,dX MOV AL,18 MUL [x] MUL [y] MUL [z] mov bx,ax MOV AL,15 MUL [x] MUL [y] MUL [z] sub bx,ax add bx,30 MOV CL,19 MOV al,[x] sub al,[y] MUL cl add ax,bx invoke wsprintf,result,formatd,ax,dx ;Преобразуем число в строку invoke MessageBox,0,result,"перемнож,слож и вычит байт",MB_OK ;Вывод invoke ExitProcess,0 ;Выход из программы .end start