Преобразование из строки в двоичную систему



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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!