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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2015, 19:28   #1
LOSi
 
Регистрация: 07.05.2015
Сообщений: 6
По умолчанию Помогите с 13 прерыванием

У меня такая проблема, я написал командную строку с выполнением 2 операций первая операция работает нормально, 2 это вывод 3 сектора памяти у меня при компиляции входит в цикл, если дебажить, то там получается ошибка FF в регистре AX и я не понимаю почему так происходит, данные передаю корректные.




Код:
org 100h
global mainFunc
global main
section .text


main:
call mainFunc
    pop ax
ret

    mainFunc:
        xor si, si
        xor di, di

        call setTextMode
        mov al, 1
        call setPage

        checkCommand:
            mov ax, text3
			push ax
			call strOut

			call strIn

			xor ax, ax
			mov bp, sp
			add bp, si
			sub bp, 2
			mov si, textcom 
			mov ah, [si]
			checkstr:
				add al, [bp]
				sub al, ah
				sub bp, 2
				inc si
				mov ah, [si]
				
				test ah, 0ffh
			jnz checkstr
			sub si,textcom
			inc si
			add ax, 0
			test ax, ax
	    jz mainFunc
	    add bp,12
	    xor ax, ax
	    mov si, textcom2
			mov ah, [si]
			checkstr2:
				add al, [bp]
				sub al, ah
				sub bp, 2
				inc si
				mov ah, [si]
				
				test ah, 0ffh
			jnz checkstr2
			sub si,textcom2
			inc si
			add ax, 0
			test ax, ax
			jz string_5
        jnz checkCommand

    ret




	string_5:
        mov bx,[buf]
        mov ch,1           
        mov cl,03h         
        mov dh,0            
        mov dl,81h          
        mov al,01h         
        mov ah,02h
        int 13h
        mov ax,buf
        mov cx, 10
        push ax
        call strOut
        jnz checkCommand
   ret     


    setCursor:
        mov ah, 2
        int 10h
    ret
    
    setPage:
        mov ah, 5
        mov bh, al
        int 10h
    ret
    
    setTextMode:
        mov ax, 0003h
        int 10h
    ret
    
    charOut:
        mov cx, 1
        mov ah, 9
        int 10h
        inc dl
        call setCursor
    ret
    
    strOut:
        mov bp, sp
        mov bp, [bp+02]
        mov al, [bp]
        mov ah, 3
        int 10h
        mov bl, 2
        string:
            call charOut
            inc bp
            mov al, [bp]
            and al, 0ffh
        jnz string
        inc dh
        xor dl,dl
        call setCursor
        pop ax
        add sp, 2
        push ax
    ret

    
    strIn:
        xor si, si
        mov bp, sp
        mov bp, [bp]

        add sp, 2
        mov bl, 3
        input:
            call inputChar
            cmp ah, 1Ch
        jz exit
            add si, 2
            call charOut
            xor ah, ah
            push ax
        jmp input

        exit:
        add si, 2
        mov ax, 0ffffh
        push ax
        xor dl, dl
        inc dh
        call setCursor
        push bp
    ret
    
    inputChar:
        mov ah, 0
        int 16h
    ret


section .data

text3 db 'Input command',0
textcom db 'reboot',0
textcom2 db 'showfile',0
buf times 512 db 0

Последний раз редактировалось LOSi; 08.05.2015 в 12:22.
LOSi вне форума Ответить с цитированием
Старый 08.05.2015, 00:00   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
LOSi
входит в цикл
..на каком участке кода ошибка-то хоть?
Из-под винды 13-ое прерывание дёргать бесполезно. Нужен чистый дос..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 08.05.2015, 11:48   #3
LOSi
 
Регистрация: 07.05.2015
Сообщений: 6
По умолчанию

Я запускаю это под qemu, c загрузчика , ошибка возникает при прочтении 3 сектора в ax выводит ошибку FF, если что смешение org 100h стоит тк я запускал в DOSbox и смотрел в турбо дебаггере.

Код:
string_5:
mov bx,[buf]
mov ch,1 
mov cl,03h 
mov dh,0 
mov dl,81h 
mov al,01h 
mov ah,02h
int 13h
mov ax,buf
mov cx, 10
push ax
call strOut
jnz checkCommand
ret

Последний раз редактировалось LOSi; 08.05.2015 в 12:22.
LOSi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод нужен срочно помогите ) в течение 2 часов от Паскаля на Турбо СИ нужно помогите Жанибек Помощь студентам 14 01.04.2015 17:23
ошибка возвращаемойая прерыванием int 10h shturman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 01.07.2010 14:04
Помогите создать програму для роботы с файлами, пожалуйста помогите нужно очень срочно Сергей Человек Фриланс 3 06.07.2009 19:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44