Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634620)
Контекстум
.

Практикум на ЭВМ. Ассемблер (190,00 руб.)

0   0
Первый авторФедотов Н. Б.
АвторыЯросл. гос. ун-т им. П. Г. Демидова
ИздательствоЯрГУ
Страниц68
ID237867
АннотацияДанная работа содержит описание лабораторных работ для практического освоения программирования на языке ассемблера. Для каждой лабораторной работы формулируется ее цель, приводится список заданий и для одного из заданий дается его полное решение в виде отлаженной программы и набора тестов, на котором она проверялась. Каждая программа содержит достаточно подробные комментарии, полезные для самостоятельного обучения, а каждый тест включает в себя его описание, исходные данные и ожидаемые результаты.
Кому рекомендованоПредназначено для студентов, обучающихся по специальности 010101.65 «Прикладная математика и информатика» (дисциплина «Практикум на ЭВМ», блок ЕН), очной формы обучения.
УДК004.4
ББК32.973.26-018.1я73
Федотов, Н. Б. Практикум на ЭВМ. Ассемблер : метод. указания / Яросл. гос. ун-т им. П. Г. Демидова; Н. Б. Федотов .— Ярославль : ЯрГУ, 2011 .— 68 с. — URL: https://rucont.ru/efd/237867 (дата обращения: 20.04.2024)

Предпросмотр (выдержки из произведения)

Образец программы title stk stk segment para stack’stack’ db ends data segment para public ‘data’ x y a dw 112 dw 122 dw 100 dup(0) data ends code segment para public ‘code’ assume cs:code,ds:data start: mov ax,data mov ds,ax mov ax,x ;ax=x 3 lab1 первая программа на ассемблере 64 dup(‘stack’) add ax,y mov a,ax mov ax,x sub ax,y mov a+2,ax mov ax,x imul y mov a+4,ax mov a+6,dx mov ax,x cwd idiv y mov a+8,ax mov a+10,dx mov ax,x inc ax mov a+12,ax mov ax,y dec ax mov a+14,ax ax,3 mov ax,x sar mov a+16,ax ax,4 mov ax,y sal mov a+18,ax mov ah,4ch int 21h code ends end start Варианты заданий 1. <...> lab4 основная программа stk segment stack dw 256 dup(0) ends data segment n a in_a db out_a db outn db outa db tab db nl db dw ? dw 100 dup(0) 13,10,’input a:’,’$’ 13,10,’output a:’,’$’ 13,10,’n=’,’$’ ‘ai=’,’$’ 9,’$’ 13,10,’$’ data ends code segment wrstr macro str mov dx,offset str mov ah,9 int 21h endm extrn rdint:far extrn wrint:far extrn shiftcr:far assume cs:code,ds:data,ss:stk ;--- подпрограмма ввода вектора invect proc ;--- ввод n wrstr outn call rdint mov n,ax ;--- подготовка цикла mov cx <...>
Практикум_на_ЭВМ._Ассемблер__методические_указания.pdf
Министерство образования и науки Российской Федерации Ярославский государственный университет им. П. Г. Демидова Кафедра компьютерной безопасности и математических методов обработки информации Н. Б. Федотов Практикум на ЭВМ. Ассемблер Методические указания Рекомендовано Научно-методическим советом университета для студентов, обучающхся по специальности Математика Ярославль 2011 1
Стр.1
УДК 002 ББК З973.2–018.1я73 Ф33 Рекомендовано Редакционно-издательским советом университета в качестве учебного издания. План 2010/2011 учебного года Рецензент кафедра компьютерной безопасности и математических методов обработки информации Федотов, Н. Б. Практикум на ЭВМ. Ассемблер : методиФ33 ческие указания / Н. Б. Федотов ; Яросл. гос. ун-т им. П. Г. Демидова. – Ярославль: ЯрГУ, 2011. – 68 с. Данная работа содержит описание лабораторных работ для практического освоения программирования на языке ассемблера. Для каждой лабораторной работы формулируется ее цель, приводится список заданий и для одного из заданий дается его полное решение в виде отлаженной программы и набора тестов, на котором она проверялась. Каждая программа содержит достаточно подробные комментарии, полезные для самостоятельного обучения, а каждый тест включает в себя его описание, исходные данные и ожидаемые результаты. Предназначено для студентов, обучающихся по специальности 010101.65 «Прикладная математика и информатика» (дисциплина «Практикум на ЭВМ», блок ЕН), очной формы обучения. . УДК 002 ББК З973.2–018.1я73 © Ярославский государственный университет им. П. Г. Демидова, 2011 2
Стр.2
Прежде чем переходить к описанию лабораторных работ, сделаем замечания общего характера. Каждая работа должна содержать комментарии, описывающие содержание работы, смысл важнейших ее частей, а также отдельных команд, имеющих ключевое значение. Далее, крайне важно приучиться использовать мнемонические имена. И наконец, важнейшей частью работы является разработка достаточно полного набора тестов, который должен следовать определенной логике, быть упорядочен, как правило, по размерности исходных данных и содержать описание теста, исходные данные и ожидаемый результат. Полезно набор тестов разработать прежде, чем писать программу. Кроме того, программы необходимо тестировать каждый раз заново при внесении любых изменений в ее текст. Лабораторная работа № 1 Цель работы – познакомиться со структурой программы, технологией выполнения (см. образец программы и приложение 1), арифметическими командами (см. приложение 3), внутренним представлением целых чисел, работой в отладчике td.exe. В работе предполагается сравнение результатов выполнения арифметических команд в отладчике с результатами расчетов, выполненных вручную. Образец программы title stk stk segment para stack’stack’ db ends data segment para public ‘data’ x y a dw 112 dw 122 dw 100 dup(0) data ends code segment para public ‘code’ assume cs:code,ds:data start: mov ax,data mov ds,ax mov ax,x ;ax=x 3 lab1 первая программа на ассемблере 64 dup(‘stack’)
Стр.3
add ax,y mov a,ax mov ax,x sub ax,y mov a+2,ax mov ax,x imul y mov a+4,ax mov a+6,dx mov ax,x cwd idiv y mov a+8,ax mov a+10,dx mov ax,x inc ax mov a+12,ax mov ax,y dec ax mov a+14,ax ax,3 mov ax,x sar mov a+16,ax ax,4 mov ax,y sal mov a+18,ax mov ah,4ch int 21h code ends end start Варианты заданий 1. 135,1222 5. 201,1276 9. 161,3183 13. 99,3157 Варианты заданий определяются значениями констант x,y: 2. 89,4177 6. 105,2242 3. 92,1158 7. 139,3157 4. 101,412 8. 1322,178 10. 111,2136 11. 151,3223 12. 79,2177 14. 121,2173 15. 133,3226 16. 145,4252 17. 119,1217 18. 111,4148 19. 141,1193 20. 120,4255 ;ax=x+y ;a[0]=x+y ;ax=x ;ax=x-y ;a[1]=x-y ;dx:ax=x*y ;a[2]=ax ;a[3]=dx ;dx:ax=ax ;ax=x/y dx=x mod y ;a[4]=x/y ;a[5]=x mod y ;ax=x+1 ;a[6]=x+1 ;ax=y-1 ;a[7]=y-1 ;ax=x/8 ;a[8]=x/8 ;ax=y*16 ;a[9]=y*16 ;ah=4ch 4
Стр.4
Лабораторная работа № 2 Цель работы – научиться программировать арифметические выражения с рационализацией по числу промежуточных вычислений, по выбору оптимальных команд. Использование внешних подпрограмм ввода-вывода и макросов. Образец программы title lab2 stk segment para stack’stack’ db 64 dup(‘stack’) stk ends data segment para public ‘data’ input_x db input_y db output_z db 10,13,’x= ‘,’$’ 10,13,’y= ‘,’$’ 10,13,’z= ‘,’$’ data ends code segment para public ‘code’ extrn rdint:far extrn wrint:far ;--- макроc вывода строки wrstr macro str mov dx,offset str mov ah,9 int 21h endm assume cs:code,ds:data,ss:stk start: mov ax,data mov ds,ax ;--- распределение регистров x y z equ bx equ bp equ si ;--- вывод запроса на число x wrstr input_x call rdint mov x,ax ;--- вывод запроса на число y wrstr input_y call rdint mov y,ax ;--- вычисление ((y-1) * x - (y-1)/x + (y-1)mod x)*16 ;--- проверка на ОДЗ cmp x,0 5
Стр.5