Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
bezmozga
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 26
1

Скажите почему прога зависает. Не пойму. Прога имитирует входной потол: пользователь вводит предложение которое сохраняется в буфер.

29.10.2009, 23:12. Просмотров 763. Ответов 7
Метки нет (Все метки)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
STAK SEGMENT STACK
    db 256 dup(?) 
STAK ENDS
DATA SEGMENT 
        buf db 256d dup(?)      ; nash bufer
        len equ  $-buf          ; dlina nashego bufer'a
DATA ENDS
CODE SEGMENT
            ASSUME CS:CODE,DS:DATA,SS:STAK
start:
        mov cx, 256d
        mov si, offset buf-1
        
        mov ah, 01h 
cikl:
        int 21h                     ; vvodim ocherednoi simvol
        inc si
        mov byte ptr ds:[si], al    ; peressylaem vvedenyi simvol v bufer
        cmp al, 0Dh                 ; proveryaem na konec stroki
        je @@exit                   
loop cikl       
@@exit:
endl:
        mov ah, 02h
        mov dl, 0Dh
        int 21h
        mov dl, 0Ah
        int 21h
exit:
        mov ax, 4C00h
        int 21h
CODE ENDS
end start
Добавлено через 5 минут
Компилировал на 16-разрядном TASM'е. Думаю проблема в компиляторе.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 23:12
Ответы с готовыми решениями:

Простая прога на использование конструкторов и деструкторов в с++ не работает ( не пойму почему (
Вот и дошла я до конструкторов/деструкторов. Но возникла проблема . Первая простая прога- и не...

Пользователь вводит 2 имени файла, прога копирует в 3 файл те строки, которые есть в 1 и во 2 файле без повтор
Доброго времени суток.Ув.Гуру,влейте в чайника мозгов. Помогите пожалуйста с задачей Пользователь...

Первая прога. Скажите что не так?)
Суть проги - игра. Нужно угадать число от одного до 10. У меня только блокнот, проверить не могу...

скажите что не так.Прога нулевая
вводим число p и считаем 1^1-2^2+3^3.....+-p^p <script> var number=+prompt("введите число")...

прога на TASM пожалуйста! Просто,но я не пойму
1. Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты. Результат...

7
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
29.10.2009, 23:14 2
Все нормально, ничего не зависает. Попробуйте описать, что вы делаете.
0
bezmozga
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 26
29.10.2009, 23:28  [ТС] 3
Компилирую. Запускаю. Начинаю хаотично вводить разные символы. Примерно на 23 или 26 символе зависает прога. Я сам знаю что код правильный. Если убрать строчку inc si то все 256 символов спокойно можно ввести. В чем проблема - наверно в компиляторе.
0
Goodwin98
2525 / 821 / 10
Регистрация: 31.05.2009
Сообщений: 1,672
29.10.2009, 23:41 4
Компилятор редко бывает виноват. Гораздо чаще ошибается программист.
Добавьте в начале кода строки:
Assembler
1
2
mov ax,DATA
mov ds,ax
Это настройка сегментного регистра ds на сегмент с буфером.
0
29.10.2009, 23:41
bezmozga
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 26
29.10.2009, 23:52  [ТС] 5
Благодарю, выручил. Неловко правда получилось из-за этих 2х строк. Вроде бы они в Зубкове есть, но внимательность подвела. Наверно из-за того что долго не прожил на ASM'е.

Добавлено через 2 минуты
Думал сто это покатит ASSUME CS:CODE,DSATA,SS:STAK.
0
LazyBoy
0 / 0 / 0
Регистрация: 05.10.2009
Сообщений: 18
30.10.2009, 00:11 6
А в результате компиляции что получается, EXE-шник, или COM-файл?

Видимо я опоздал с решением...
0
bezmozga
6 / 6 / 0
Регистрация: 29.10.2009
Сообщений: 26
30.10.2009, 00:29  [ТС] 7
exe-шник.

Почему изначально не сработаала прога? Была ошибка в том что не использовал mov
ax,DATA
mov ds,ax
Понадеялся на ASSUME CS:CODE,DSATA,SS:STAK
Но
Цитата Сообщение от bezmozga Посмотреть сообщение
Директива ASSUME не изменяет значений сегментных регистров, а только позволяет ассемблеру проверять допустимость ссылок и самостоятельно вставлять при необходимости префиксы переопределения сегментов, если они необходимы.
0
LazyBoy
0 / 0 / 0
Регистрация: 05.10.2009
Сообщений: 18
31.10.2009, 11:22 8
Цитата Сообщение от bezmozga Посмотреть сообщение
Почему изначально не сработаала прога? Была ошибка в том что не использовал mov
ax,DATA
mov ds,ax
да
0
31.10.2009, 11:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2009, 11:22

Прога - Буфер обмена - Word, Excel.
Всех приветствую! Вопрос такой. Как подсказать Ворду и Экселю, что данные в буфере обмена - это...

Зависает прога
ПОМОГИТЕ ПРОГА ЗАВИСНИЛА!!!!!!!!!! Ctrl+Alt+Del не помогло...

Прога зависает
#ifndef CONNECTOR_H #define CONNECTOR_H #include <windows.h> #include <stdio.h> #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru