0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 6
1

Нужна процедура, которая сообщает об ошибке при вводе букв вместо цифр

04.12.2016, 19:25. Показов 885. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
привет. У меня программа , которая переводит введеное в 10с.с число в 2 с.с, но не получается процедура,которая сообщает об ощибке,при вводе букв вместо цифр. Кидаю код основы, а ниже,после "////////////" процедура проверки. Буду признательна,если скажете,в чем дело (вставляла в код,но программа работала при любом вводе,даже неверном)

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
STAK    SEGMENT STACK
DB  256 DUP (?)
STAK    ENDS
 
DATA    SEGMENT
    BUF     DB      5, 00, 6 DUP ('$')      
    OUTBUF  DB      13, 10, 16 DUP ('0'), '$'
DATA    ENDS
 
CODE SEGMENT
    ASSUME  CS:CODE, DS:DATA, SS:STAK
 
READ    PROC    
    MOV AH, 0AH  
    LEA DX, BUF 
    INT 21H
    RET
READ    ENDP
 
PRINT   PROC
    MOV AH, 09H 
    LEA DX, OUTBUF  
    INT 21H
    RET
PRINT   ENDP
 
STR_TO_NUM      PROC        
    MOV DI, 0
    LEA BX, BUF + 1 
    MOV CX, [BX]    
    XOR CH, CH
    MOV SI, 1       
 M1:    PUSH    SI  
    MOV SI, CX  
    MOV AX, [BX+SI] 
    XOR AH, AH 
    POP SI      
    SUB AX, 30H 
    MUL SI      
    ADD DI, AX  
    MOV AX, SI  
    MOV DX, 10D 
    MUL DX      
    MOV SI, AX  
    LOOP    M1      
STR_TO_NUM     
 ENDP
 
DEC_TO_BIN  PROC    
    MOV BX, DI              
    LEA SI, OUTBUF + 2      
    MOV CX, 10h             
 DB2:   SHL BX, 1           
    JC DB1                  
    MOV BYTE PTR [SI], '0'     
    JMP DB3
 DB1:   MOV BYTE PTR [SI], '1'  
 DB3:   INC SI          
    LOOP DB2
    RET
DEC_TO_BIN  ENDP
 
 
START:
    XOR AX, AX
    MOV BX, DATA    
    MOV DS, BX  
 
    CALL    READ    
    CALL    STR_TO_NUM  
 
    CALL    DEC_TO_BIN  
    CALL    PRINT   
 
    
MOV AH, 4CH
    INT 21H
CODE    ENDS
END START
 
//////////////////////////////////////////////////
 
cifra proc
 
error: txt db  0dh,0ah, "error", 0dh,0ah, "$"
lea DX, txt
 
end cifra
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2016, 19:25
Ответы с готовыми решениями:

В случае набора букв вместо цифр сгенерировать сообщение об ошибке с помощью ErrorProvider
Необходимо в случае набора букв вместо цифр сгенерировать сообщение об ошибке при помощи...

При вводе любых символов, кроме цифр, выдавать сообщение об ошибке
Есть форма. В ней вводят R1(TextBox1),R2(TextBox2). Нужно, чтобы при вводе любых символов, кроме...

Исправить код программы и дописать так, чтобы при вводе в массив букв выводилось сообщение об ошибке
Программа должна считать произведение элементов массива. Я попробовала написать код, но он не...

Ошибка времени исполнения при вводе букв вместо числа
Доброго времени суток. Помогите пожалуйста. При запуске кода, открывается программа, когда пишу...

3
6767 / 2737 / 384
Регистрация: 17.02.2013
Сообщений: 4,045
04.12.2016, 21:30 2
Цитата Сообщение от anna131313 Посмотреть сообщение
error: txt db 0dh,0ah, "error", 0dh,0ah, "$"
Эту строчку перенеси в сегмент данных.

Добавлено через 1 минуту
Цитата Сообщение от anna131313 Посмотреть сообщение
PRINT PROC
MOV AH, 09H
LEA DX, OUTBUF
INT 21H
RET
PRINT ENDP
Так вот же у тебя готовая процедура вывода строки с метки OUTBUF. Если вместо OUTBUF воткнуть error будет выводиться строка с метки error. Так-что делай по аналогии и всего делов.
0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 6
04.12.2016, 21:38  [ТС] 3
поняла вроде,спасибо огромное
0
Модератор
Эксперт по электронике
8475 / 4334 / 1642
Регистрация: 01.02.2015
Сообщений: 13,456
Записей в блоге: 8
05.12.2016, 22:33 4
Должно получиться что-то подобное (набрал в браузере без проверки)
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cifra proc
        mov     cx, BUF+1
        lea     si, BUF+2
        jcxz    @@Error
 
@@While:
        mov     al, [si]
        inc     si
        cmp     al, '0'
        jb      @@Error
        cmp     al, '9'
        ja      @@Error
        loop    @@While
@@Ok:
        ret
@@Error:
        MOV AH, 0AH  
        LEA DX, error 
        INT 21H
        ret
cifra endp
0
05.12.2016, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2016, 22:33
Помогаю со студенческими работами здесь

При вводе цифр и букв вместе, программа должна выдавать ошибку
Проблема в следующем... Мне нужно, чтобы программа выдавала ошибку, если я введу что-то подобное...

При вводе вместо цифр символов программа перестаёт ожидать ввода на следующей итерации цикла. Почему?
Почему это происходит? #include <iostream> using namespace std; int main() {...

При попытке воспользоваться наушниками и микрофоном программа устранения неполадок сообщает об ошибке
При попытке воспользоваться наушниками и микрофоном программа устранения неполадок выдает ошибку...

Функция, которая при вводе натурального числа выводит количество цифр в нем и их сумму
Написать и протестировать функцию которая при вводе натурального числа выводит количество цифр в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru