21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
1

К числу введённому с клавиатуры прибавить число

05.11.2013, 16:31. Показов 2581. Ответов 8
Метки нет (Все метки)

Нужно к числу введённому с клавиатуры прибавить число. Вроде бы всё просто до смеха. И разжёванно. Да что то не получается. Компилируется нормально, но при вводе числа выдаёт ошибку "Процессор NTVDM обнаружил не допустимую инструкцию". Может быть я что то не так складываю?
ТАСМ
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    title   a+3
    code    SEGMENT
    assume cs:code, ds:code
begin:  mov ax,code
    mov ds,ax
    mov cx,5    ;не более пяти цифр
    mov ah,1    
    int 21h ;ввод с клавиатуры в регистр AL
    cmp al,13   ;до нажатия Enter
    je  summ    
summ:   add al,3    
    mov dl,al
    mov ah,2    ;вывод из регистра dl
    int 21h 
    code    ends
        end begin
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 16:31
Ответы с готовыми решениями:

К числу А (тип Integer) введенному с клавиатуры прибавить число 100
К числу А (тип Integer) введенному с клавиатуры прибавить число 100. var a:integer; begin...

Прибавить единицу к введенному числу и вывести результат
Начал изучать Ruby по этому сайту http://www.shokhirev.com/mikhail/ruby/ltp/Chapter04.html Так...

Написать программу, которая в матрице чисел A(N,M) находит все элементы, равные числу, введенному с клавиатуры. Подсчитать число таких элементов
Написать программу, которая в матрице чисел A(N,M) находит все элементы, равные числу, введенному с...

По введённому с клавиатуры целому неотрицательному числу n, вычислить:
По введённому с клавиатуры целому неотрицательному числу n, вычислить: 4 ∙...

8
193 / 189 / 18
Регистрация: 06.10.2013
Сообщений: 358
05.11.2013, 16:54 2
residentkms, нужно завершать программу корректно.
Assembler
1
2
mov ah,4ch
int 21h
Или ret, если это .com файл.
1
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
05.11.2013, 17:05  [ТС] 3
вот уж точно
0
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
09.11.2013, 06:46  [ТС] 4
не буду плодить много тем, задача похожая, но нужно сложить 2 числа введённых с клавиатуры (например двухзначных). но как всегда у самого не получается. вот накалякал :
всё тот же TASM
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
    stk segment
    db  256 dup ("?")
    stk ends    
code    segment
    assume cs:code, ds:code, ss:code
start:  mov     ax,code
    mov     ds,ax   
 
    mov bx,0    ;формируем значение в bx
    mov si,10   ;десятичное число
    mov cx,2    ;2 цифры
next:   mov ah,1    
    int 21h ;считывание символа с клавиатуры
    cmp al,' '  
    je  next1   ;при нажатии на пробел переходим ко вводу второго числа
    mov ah,0    ;перевод ascii кода в бинарный вид
    and al,00001111b
    mov di,ax
    mov ax,bx
    mul si
    add ax,di
    mov bx,ax
    loop    next
    push    bx  ;ложим первое число в стек
 
next1:  mov ah,1
    int 21h
    cmp al,' '
    je  summ
    mov ah,0
    and al,00001111b
    mov di,ax
    mov ax,bx
    mul si
    add ax,di
    loop    next1
 
summ:   pop bx
    add ax,bx   ;складываем
    mov si,10   
    div si
    push    dx  
    div si
    push    dx
    div si
    mov dx,ax
    mov ah,2    ;вывод
    int 21h
    pop dx
    mov ah,2
    int 21h
    pop dx
    mov ah,2
    int 21h
    mov ax,4ch
    int 21h
    code    ends
    end     start
0
193 / 189 / 18
Регистрация: 06.10.2013
Сообщений: 358
09.11.2013, 07:52 5
residentkms, вот, без проверок на ошибки ввода.
Кликните здесь для просмотра всего текста
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
.model tiny
.386
.code
org 100h
start:
 
call scanf
push di
call scanf
pop ax
 
add ax,di
xor cx,cx
mov di,10
 
@3:
xor dx,dx
div di
push dx
inc cx
test ax,ax
jnz @3
 
@4:
pop ax
or al,30h
int 29h
loop @4
 
xor ax,ax
int 16h
 
ret
 
scanf:
 
xor di,di
 
@1:
mov ah,1
int 21h
cmp al,20h
je @ret
 
and ax,0fh
imul di,10
add di,ax
jmp @1
 
@ret:
mov al,0ah
int 29h
ret
 
end start

И это, не "ложим", а "кладём".
1
Ушел с форума
Автор FAQ
14932 / 7182 / 877
Регистрация: 11.11.2010
Сообщений: 12,882
09.11.2013, 10:37 6
Not at all!,
проще нужно!
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
; masm dos com #
.model tiny
.286 
.code
org 100h
start:  mov ax,3
    int 10h
    mov si,offset string
    mov di,si
    mov ah,9
    mov dx,offset message
    int 21h
next:   mov ah,1    
    int 21h ;считывание символа с клавиатуры
    stosb
    cmp al,0Dh
    jne next   ;при нажатии на Enter переходим к сложению
    inc si
    and word ptr string[0],0F0Fh
    and word ptr string[3],0F0Fh
    mov bx,4
    mov cx,2    
    std 
a0: xor ax,ax
    lodsb
    add al,string[bx]
    aaa
    mov string[bx],al
    dec bx
    add string[bx],ah
    loop a0
    cld
    or word ptr string[bx],'00'
    or string[bx+2],'0'
    mov string[bx+3],'$'
    mov word ptr string[bx-2],0A0Dh
    mov ah,9
    mov dx,offset string
    int 21h
    mov ah,0
    int 16h
    ret
message db "Введите через пробел два двузначных числа и нажмите на Enter",0Dh,0Ah,"$"
string db 5 dup(0)
end start
1
193 / 189 / 18
Регистрация: 06.10.2013
Сообщений: 358
09.11.2013, 10:42 7
Mikl___, восхищён простотой Вашего кода. Надеюсь, ТС разделяет мои чувства.

Не по теме:

Стесняюсь спросить, хобби у Вас какое?

0
Mikl___
09.11.2013, 10:58
  #8

Не по теме:

Not at all!,
IP-телефония :)

0
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
09.11.2013, 12:56  [ТС] 9
Цитата Сообщение от Not at all! Посмотреть сообщение
Mikl___, восхищён простотой Вашего кода. Надеюсь, ТС разделяет мои чувства.

Не по теме:

Стесняюсь спросить, хобби у Вас какое?

Мб это не звучит профессионально, но мне твой код понятнее
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2013, 12:56

Подсчитать количество элементов, кратных числу, введенному с клавиатуры
Дан одномерный массив размерностью 15, сформированный генератором случайных чисел. Подсчитать...

В матрице найти все элементы, равные числу, введенному с клавиатуры
Написать программу, которая в матрице чисел A(N,M) находит все элементы, равные числу, введенному с...

Определить количество элементов массива, кратных введенному с клавиатуры числу
Напишите программу, которая определяет количество элементов массива кратных введенному элементу с...

Найти в матрице все элементы, равные числу, введенному с клавиатуры
Написать программу, которая в матрице чисел A(N,M) находит все элементы, равные числу, введенному с...


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

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

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