Навички роботи з записами мови ассемблера, зокрема, створення масивів записів з можливістю управління елементами і очищення поля. Програма дозволяє ввести з клавіатури запис, а потім за допомогою функціональних клавіш дозволяє редагувати цей запис.
Запис - структурний тип даних, що складається з фіксованого числа елементів завдовжки від одного до декількох біт. Використовування записів в програмі, так само, як і структур, організовується в три етапи: Задання шаблона запису, тобто визначення набору бітових полів, їх довжин і, при необхідності, ініціалізація полів. Так само, як і для структур, цей етап має на увазі ініціалізацію конкретної змінної типом наперед визначеної за допомогою шаблона запису. Компілятор TASM, крім стандартних засобів обробки записів, підтримує також і деякі додаткові можливості їх обробки. Для використовування шаблона запису в програмі необхідно визначити змінну з типом даного запису, для чого застосовується наступна синтаксична конструкція (мал.У ході розробки курсового проекту були вивчені навички роботи з записами мови ассемблера, зокрема, створення масивів записів, доступу до них, створення в них записів, з можливістю управління елементами і очищення поля.
План
Зміст
Вступ
Загальні відомості
Функціональне призначення
Опис логічної структури
Використовувані технічні засоби
Виклик і завантаження
Вхідні дані
Вихідні дані
Висновки
Література
Вывод
У ході розробки курсового проекту були вивчені навички роботи з записами мови ассемблера, зокрема, створення масивів записів, доступу до них, створення в них записів, з можливістю управління елементами і очищення поля. Розроблена програма дозволяє ввести з клавіатури запис, представлений у вигляді прізвища, імені, по батькові, назва міста і дати народження, а потім за допомогою функціональних клавіш дозволяючих: -додати запис;
-видалити запис;
-змінити поле;
-очистити поле.
Список литературы
1. Финагенов К.Г. “Основы системного программирования” изд.”Радио и Связь”2001 год.
2. Питер Абель “Ассемблер- язык и программирование для IBM PC” изд. Киев “НТИ” 2003 год.
3. Зубков С.В.”Ассемблер для DOS,WINDOWS И UNIX ” Москва 2004г.
@@ex1: mov ax,1900h call gotoxy popa ret viewel endp memzero proc near ;Обнуление памяти
;DS:DX->Mem
;CX=SIZE push ax cx di es xor ax,ax mov di,dx push ds pop es cld rep stosb pop es di cx ax ret memzero endp readstring proc near ;Чтение строки с клавиатуры
;DS:DX->буффер
;AL=макс. колво символов push ax dx xor cx,cx mov cl,al call memzero mov @@buf,al mov ah,0Ah lea dx,@@buf int 21h lea si,@@buf inc si xor cx,cx mov cl,[si] inc si pop di push dx rep movsb pop dx ax ret
@@buf db 0, 60 dup (?) readstring endp readword proc near ;Чтение числа с клавиатуры push bx dx si lea dx,@@tmps mov al,3 call readstring xor ax,ax lea si,@@tmps cmp byte ptr [si 1],0 jne @@l2 mov al,[si] xor bx,bx jmp @@l1
@@l2: mov al,[si] cmp al,"0" jb @@ex1 cmp al,"9" ja @@ex1 sub al,"0" mov bl,10 mul bl mov bx,ax mov al,[si 1]
@@l1: cmp al,"0" jb @@ex1 cmp al,"9" ja @@ex1 sub al,"0" add ax,bx jmp @@ex2
@@ex1: xor ax,ax
@@ex2: pop si dx bx ret
@@tmps db 3 dup (?) readword endp writestring proc near ;Вывод строки на экран
;DS:DX->STR push ax si mov si,dx cld
@@l1: lodsb test al,al jz @@l2 push si mov ah,0Eh int 10h pop si jmp @@l1
@@l2: pop si ax ret writestring endp writeword proc near ;Вывод числа на экран
;EAX=WORD pusha cmp ax,0 jne @@ll1 mov ax,0E30h int 10h popa ret
@@ll1: lea dx,@@res_str mov cx,20 call memzero mov @@value,eax fild @@value ;загрузка числа в сопроцессор fbstp @@bcd_value ;выгрузка из сопроцессора в память
@@l1: lodsb test al,al jz @@l1 push ax shr al,4 test al,al jz @@l3 add al,"0" mov [di],al inc di
@@l3: pop ax and al,0Fh add al,"0" mov [di],al inc di cmp si,offset @@bcd_value jb @@l2 jmp @@l1
@@l2: lea dx,@@res_str call writestring popa ret
@@value dd 0
@@bcd_value dt 0
@@res_str db 20 dup (0) writeword endp gotoxy proc near ;Установить позицию курсора
;AH=Y AL=X push ax bx dx mov dx,ax xor bh,bh mov ah,2 int 10h pop dx bx ax ret gotoxy endp clrscr proc near ;Очитска экрана push ax mov ax,0003 int 10h pop ax ret clrscr endp settextattr proc near ;установка атрибутов текста
;AL=атрибут
;BL=X BH=Y - начальная позиция
;CX - количество знакомест push ax bx cx di es mov dl,80*2 push ax xor ax,ax mov al,bh mul dl xor dx,dx mov dl,bl shl dx,1 add ax,dx mov di,ax inc di pop ax mov dx,0B800h push dx pop es
@@l1: stosb inc di loop @@l1 pop es di cx bx ax ret settextattr endp clrworkfield proc near ; очитска рабочей части экрана push ax cx dx mov ax,0500h lea dx,clr mov cx,3