3 / 3 / 1
Регистрация: 17.02.2013
Сообщений: 63
1

Работа со строкой - помогите найти ошибку

20.02.2014, 23:47. Показов 385. Ответов 1
Метки нет (Все метки)

Не могли бы помочь найти ошибку. В проге ввожу двоичное число без эха посимвольно с предварительной проверкой, затем записываю их в строку. потом хочу получить численное представление числа для сложения с другим числом. для этого просто задаю переменную number1 с нулевым значением и если при вводе встречается "1", то после сдвига соответствующего бита этого числа в сторону младшего разряда прибавляю единицу и сдвигаю обратно, однако после преобразования число не меняется. что нужно исправить?
вот собственно код:
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
.model small
.stack 900
.data
hello db "Input number1: $"
num1 db "        ", 13, 10
num2 db "        ", 13, 10
res db "        ", 13, 10
number1 db 00000000b
.code
start:
;инициализация сегментного регистра
    mov ax, @data
    mov ds, ax
;очистка экрана
    mov  ax, 0600h  
    mov  bh, 07     
    mov  cx, 0000   
    mov  dx, 184Fh  
    int  10h       
;вывод сообщения
    mov ah, 09h
    mov dx, offset hello
    int 21h
    
    mov cx, 08h
    xor bx,bx
    mov dl, byte[number1]
r1:
    xor ax,ax
    int 16h
    cmp al, "0"
    jb r1
    cmp al, "1"
    ja r1
    mov num1[bx], al
    cmp al, "1"
    je zap1
    
continue:
    inc bx
    loop r1
    jmp next
zap1:
    push cx
    push ax
    mov ax, 111h
    sub ax, bx
    mov cl, al
    shr dl, cl
    add dl, 1
    shl dl, cl
    pop ax
    pop cx
    jmp continue
 
next:
    mov number1, dl
    mov ah, 02h
    int 21h
    mov ah, 4ch
    int 21h
end start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2014, 23:47
Ответы с готовыми решениями:

Работа с файлами, помогите найти ошибку.
Нужно написать программу которая будет выписывать в файл значения синуса от 0 до 2Pi с шагом Pi/11...

Простенькая программа с символьной строкой. Надо найти ошибку.
Программа, которая ищет в введённой строке вукву A и заменяет её на букву B и выводит полученную...

Перед строкой матрицы с номером К вставить строку из нулей (найти ошибку)
const max=20; var x:arrayof integer; m,n,i,j,k,t:integer; begin clrscr; randomize; repeat...

Программа пишет ошибку!! Помогите найти ошибку
Program Summa; var i, N, M: integer; begin Writeln ('Введите значение N:'); Read (N); ...

1
6681 / 2664 / 366
Регистрация: 17.02.2013
Сообщений: 3,906
22.02.2014, 11:24 2
>то после сдвига соответствующего бита этого числа в сторону младшего разряда
При этом выдвинутые из регистра биты теряются безвозвратно (кроме выдвинутого последним, который остается в флаге переноса).

>прибавляю единицу и
>сдвигаю обратно
При этом в регистр вдвигаются нули.

Т.е. ниже выставленного посредством прибавления единицы бита все биты оказываются обнулены.

Используй вместо команд сдвига команды вращения. ROR и ROL. И у тебя все прекрасно получится.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2014, 11:24
Помогаю со студенческими работами здесь

Помогите найти ошибку: По двум сторонам и углу найти все остальное
Доброго времени суток. В универе дали задание написать программу "По двум сторонам и углу между...

Найти коэффициент при 10 степени в разложении бинома Ньютона (помогите найти ошибку).
"После умножения скобок и приведения подобных в полиноме будет слагаемое с x**10. Перед ним стоит...

Помогите найти ошибку в коде. Найти сумму ряда
Добрый день, помогите найти ошибку. Задача: Найти сумму ряда, вычисление ввести до тех пор пока...

Помогите найти ошибку
#include <stdio.h> #include <conio.h> void main () {int i,j,s; int ** b=new int*(4) for...

Помогите найти ошибку?
Мне нужно что бы по нажатию кнопки значение суммарной яркости заносилось в текстбокс. Но почему то...

помогите найти ошибку
Процедура Сформировать() Сообщить("Идет расчет");...


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

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

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