Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2012, 20:59   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию ВСЕ ПИЩИТ И ПАДАЕТ! легенькая программа

Вот код который ассемблируется, вообщем превращаеться в ексешник, реализован для Ф1 по заданию(вместо ф1 надо ввести "a")
После ввода выводиться масса непонятныйх символов все пищит, и я в панике перезагружаю комп... ><
Код перепроверял много раз. все вроде норм.
Сортировку реализовал пузырьковую

Код:
;1) Ввести строку из произвольных ASCII-символов и произвести её сортировку под управлением функциональных клавиш: 
;<F1> – по возрастанию; 
;<F2> – по убыванию; 
;<F10> – завершение программы. 
;Работу программы отобразить на экране

                       %TITLE "HELLO.ASM"
                        IDEAL
                        MODEL small
                        STACK 256
                        DATASEG
string	        DB	80 DUP(?)	                        ; Буфер для ввода пароля
promt             DB 13,10,'Enter string$'

	              CODESEG
start:	mov ax,@data
                mov ds,ax

begin:	mov ah,09h
		mov dx,offset promt
		int 21h
		mov ah,02
		mov dl,13
		int 21h
		mov dl,10
		int 21h
		mov bx,0;
		jmp Mass
Mass:    mov ah,01h
		int 21h
		cmp al,13
		je Enter0
		mov [string+bx],al
		inc bx
		jmp Mass
Enter0:  mov ah,02h
		mov dl,13
		int 21h
		mov dl,10
		int 21h
		mov [string+bx],00h
		jmp oBegin
oBegin: mov ah,01h
		int 21h
		cmp al,61h
		je F1
		jne exit
F1:		mov bx,0
		mov si,0
		jmp BSort
BSort:	cmp [string+bx],00h
		je endF1
		mov al,[string+bx]
		mov di,bx
		jmp searchmin
searchmin:
		inc si
		cmp [string+si],00h
		je putmin 
		cmp al,[string+si]
		jg switch0
		jmp searchmin
		
switch0:	mov al,[string+si]
		mov di,si
		jmp searchmin

putmin:	mov al,[string+bx]
		mov ah,[string+di]
		mov [string+di],al
		mov [string+bx],ah
		inc bx
		mov si,bx
		jmp BSort

endF1:	mov bx,0
		jmp output
output:	mov ah,02
		mov dl,[string+bx]
		int 21h
		inc bx
		cmp bx,00h
		je oBegin
		jmp output

exit:              mov ax,4C00h	                          ;Ввод функции 4С для завершения программы
                      int 21h
END  start

Последний раз редактировалось pinkiller; 20.03.2012 в 21:02.
pinkiller вне форума Ответить с цитированием
Старый 20.03.2012, 21:16   #2
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Вооот рабочий код ^^
Код:
;1) Ввести строку из произвольных ASCII-символов и произвести её сортировку под управлением функциональных клавиш: 
;<F1> – по возрастанию; 
;<F2> – по убыванию; 
;<F10> – завершение программы. 
;Работу программы отобразить на экране

                       %TITLE "HELLO.ASM"
                        IDEAL
                        MODEL small
                        STACK 256
                        DATASEG
string	        DB	80 DUP(?)	                        ; Буфер для ввода пароля
promt             DB 13,10,'Enter string$'

	              CODESEG
start:	mov ax,@data
                mov ds,ax

begin:	mov ah,09h
		mov dx,offset promt
		int 21h
		mov ah,02
		mov dl,13
		int 21h
		mov dl,10
		int 21h
		mov bx,0;
		jmp Mass
Mass:    mov ah,01h
		int 21h
		cmp al,13
		je Enter0
		mov [string+bx],al
		inc bx
		jmp Mass
Enter0:  mov ah,02h
		mov dl,13
		int 21h
		mov dl,10
		int 21h
		mov [string+bx],00h
		jmp oBegin
oBegin: mov ah,01h
		int 21h
		cmp al,61h
		je F1
		jne exit
F1:		mov bx,0
		mov si,0
		jmp BSort
BSort:	cmp [string+bx],00h
		je endF1
		mov al,[string+bx]
		mov di,bx
		jmp searchmin
searchmin:
		inc si
		cmp [string+si],00h
		je putmin 
		cmp al,[string+si]
		jg switch0
		jmp searchmin
		
switch0:	mov al,[string+si]
		mov di,si
		jmp searchmin

putmin:	mov al,[string+bx]
		mov ah,[string+di]
		mov [string+di],al
		mov [string+bx],ah
		inc bx
		mov si,bx
		jmp BSort

endF1:	mov bx,0
		jmp output
output:	mov ah,02h
		mov dl,[string+bx]
		int 21h
		inc bx
		cmp [string+bx],00h
		je oBegin
		jmp output

exit:              mov ax,4C00h	                          ;Ввод функции 4С для завершения программы
                      int 21h
END  start
pinkiller вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пищит bfg geforce 9800 gt Altera Компьютерное железо 2 16.09.2011 14:03
Почему динамик не пищит? Dimaz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 01.04.2011 21:15
HDD пищит ViNcHeStEr Компьютерное железо 1 14.02.2010 20:38
Компьютер Пищит Zmaxer Компьютерное железо 2 20.10.2009 14:10
Программа падает при добавлении кода, который не используется. Protsv Общие вопросы Delphi 16 03.04.2008 08:01