Преобразование из строки в двоичную систему
Aibproc
Pushbx
Push cx
Xorax,ax
chkneg:
cmp byte ptr [bx],'-'
Jnechkpos
Incbx
Dec cx
Callconstr
Neg ax
Jmp Quit
chkpos:
Callconstr
Quit:
Pop cx
Popbx
Ret
Aibendp
Преобразование из двоичной системы в строку
Biaproc
Push dx
Pushsi
Push ax
Movcx,L
FB:
mov byte ptr [bx], ' '
Incbx
Loop FB
Mov si,10
Orax,ax
Jns DV
Neg ax
DV:
Xordx,dx
Divsi
add dx,'0'
Decbx
mov byte ptr [bx],dl
Inc cx
Orax,ax
Jnz DV
Pop ax
Orax,ax
Jns NM
Decbx
mov byte ptr [bx],'-'
Inc cx
NM:
Popsi
Pop dx
Ret
Biaendp
Процедура конвертирования строки
Constrproc
Pushbp
Pushbx
Pushsi
Movbp,bx
Xorbx,bx
Mov si,10
digit:
Push dx
Mulsi
Pop dx
movbl,ds:[bp]
And bx,0fh
Addax,bx
Jcendcon
Incbp
Loop digit
endcon:
Popsi
Popbx
Popbp
Ret
Constrendp
|
|
Процедура перевода строки
Entproc
Push dx
Movdx,offset CR_LF
Call print
Pop dx
Ret
Entendp
Процедура отлавливания кода клавиши
Waitkeyproc
Push ax
Mov ah,8
Int 21h
Pop ax
Ret
Waitkeyendp
Вывод
Printproc
Push ax
Mov ah,09h
Int 21h
Pop ax
Ret
Printendp
Вторая лабораторная работа
Lab2proc
Pushax
Pushbx
Mov res,0
Movax,aaI
Movbx,bbI
Cmpax,bx
JL Less
JE EqInt
JG Great
JmpCont
Less:
Movax,aaI
Movbx,bbI
Cwd
Idivbx
Add ax,100
Movres,ax
JmpCont
Great:
Mov res,32
JmpCont
EqInt:
Xordx,dx
Movax,aaI
Movbx,bbI
ImulaaI
Idivbx
Movres,ax
JmpCont
Cont:
Popbx
Pop ax
Ret
Lab2endp
Cseg ends
endStart
Листингпрограммы «LINUX»
global main
extern exit
extern puts
externscanf
externprintf
section .text
main:
pushdwordbbbS ;Помещение в стек
pushdwordaaaS ; Команда уменьшает значение регистра
pushdword msg1 ; указателя стека ESP(SP) на 4(2) и затем
callscanf ; записывает значение источника в
subesp, 12 ; вершину стека.
moveax,dword[aaaS]
movebx,dword[bbbS]
|
|
Cmpax,bx
JL Less
JE EqInt
JG Great
Less:
Cwd
Idivbx
Add ax,100
JmpCont
Great:
Mov ax,32
JmpCont
EqInt:
ImulaaaS
Idivbx
Cont: cwd ;Преобразование слова в двойное слово
xchgax,dx ; Обмен значениями между операндами
shl eax,16 ; Сдвиг всех битов операнда влево на количество разрядов
movax,dx
pusheax
pushdword msg2
callprintf
sub esp,8
pushdword 0
call exit
ret
;code ends
section .data
msg1db "%d%d",0
msg2db "%d",0xA,0
aaaSdd 0
bbbSdd 0
Вывод
В данной курсовой работе я освоил ввод и вывод данных, условные и безусловные переходы, подключение библиотечных функций, уяснил особенности реализации задачи на MASM и NASM компиляторах и в различных операционных системах (DOS, UNIX).
Дата добавления: 2018-05-30; просмотров: 272; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!