Листинг учебных программ к лаб. работе Ассемблер процессоров Intel x86
Описание файла
Документ из архива "Листинг учебных программ к лаб. работе Ассемблер процессоров Intel x86", который расположен в категории "". Всё это находится в предмете "теория и проектирование алгоритмов цос" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "теория и проектирование алгоритмов цос" в общих файлах.
Онлайн просмотр документа "Листинг учебных программ к лаб. работе Ассемблер процессоров Intel x86"
Текст из документа "Листинг учебных программ к лаб. работе Ассемблер процессоров Intel x86"
; Простейший вариант вывода текста на экран
DATA SEGMENT
HELLO DB 'Привет от Турбо Ассеmблера!$'
DATA ENDS
; Код программы
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: mov AX, DATA
mov DS,AX
mov AH,9 ; Вывод сообщения
mov DX,OFFSET HELLO
int 21h
mov AH,4Ch ; Выход в вызывающий процесс
int 21h
CODE ENDS
END START
; Вывод текста на экран – в форме подпрограммы
astack segment stack
dw 12 dup (?)
astack ends
adata segment
greet db 'Приветствие $'
adata ends
start segment
assume cs:start,ds:adata,ss:astack
vyvod proc far
push ds
sub ax,ax
push ax
mov bx,adata
mov ds,bx
mov dx,offset greet
mov ax,0900h
int 21h
ret
vyvod endp
start ends
end vyvod
; Программа ввода имени и вывода приветствия
astack segment 'stack'
dw 12 dup(?)
astack ends
adata segment 'data'
buffer db 50,51 dup('@')
prompt db 'Введите свое имя: $'
text db 10,'Здравствуйте, ',20 dup ('$')
adata ends
start segment 'code'
assume cs:start,ds:adata,ss:astack,es:adata
rdkeys proc far
push ds
sub ax,ax
push ax
mov bx,adata
mov ds,bx
mov es,bx
mov dx,offset prompt
mov ah,9
int 21h
lea dx,buffer
mov ah,0ah
int 21h
sub ch,ch
mov cl,buffer+1
add dx,2
lea si,buffer+2
lea di,text+15
rep movs text+15,buffer+2
mov dx,offset text
mov ah,9
int 21h
ret
rdkeys endp
start ends
end rdkeys
; преобразование числа в ASCII-код
convert proc near
; ax = число, di = указатель адреса в буфере
push ax ; сохранение числа
mov al,' '
mov cx,3
rep stosb ; очистка трех байт
pop ax ; восстановление числа в ах
mov cx,10 ; сх = делитель
conloop:xor dx,dx ; обнуление регистра dx для хранения остатка
div cx ; деление ах на 10
add dl,30h ; преобразование в ascii-код
dec di ; перемещение указателя на 1 байт
mov [di],dl ; сохранение ascii-кода очередной цифры
cmp ax,0 ; проверка на конец цикла
jnz conloop ; возврат к началу цикла, если не 0
ret
convert endp
; Вывод на монитор цветных квадратов с циклической сменой цветов фона
start segment | inc cx | |
assume cs:start,ds:start | cmp cx,170 | |
begin: mov ax,start | js cikl1 | |
mov ds,ax | inc dx | |
mov ah,0 | cmp dx,110 | |
mov al,04 ; 320х200 стpок | js cikl | |
int 10h | mov ah,7 | |
mov si,0 | int 21h | |
palet: mov ah,0bh ; уст палитры | inc si | |
mov bh,00 ; уст фона | cmp si,64 | |
mov bx,si ; цвет фона | jl palet | |
int 10h | mov ah,4ch | |
mov ah,0bh ; уст палитры | int 21h | |
mov bh,01 ; выбоp палитры | start ends | |
mov bl,0 ; палит 0 | end begin | |
int 10h | ||
mov dx,100 | ||
cikl: mov cx,160 | ||
cikl1: mov ax,0c02h ; 0c - вывод точки, 2- кpасной | ||
int 10h | ||