Ах еслиб с++ =) Курсовую сдал, и распрощался с ним в учебном процессе я думаю навсегда. Теперь Асм.
-=Need Help=-Вот отрывок в котором попытался реализовать, но почему то постоянно теряет последний бит и получается
Данные:
MAXLEN DB 9
ACTLEN DB ?
BUFF DB 9 DUP (' ')
NUM DB 0
Ввод в строку кода:
MOV AH,10
LEA DX,MAXLEN
INT 21H
Обработка введёной последовательности,-мы к NUM=00000000B в DL, каждой итерацией добавляем 1 или оставляем 0 в последнем бите,в зависимости от 1 или 0 в массиве, и сдвигаем его на позицию предпоследнего. В результате на выходе из цикла последний бит станет первым, предпоследний-вторым и т.д.
MOV SI,0
MOV CX,7
MOV AH,2
MOV DL,NUM
M:
MOV BL,BUFF[SI]
CMP BL,48
JZ NEXT
OR DL,00000001B
NEXT:
SHL DL,1
INC SI
LOOP M
MOV AH,2
INT 21H
Результат работы программы:
C:\MASM>l3
Input x:00110001
0
C:\MASM>l3
Input x:00110010
2
C:\MASM>l3
Input x:00110011
2
C:\MASM>l3
Input x:00110100
4
C:\MASM>l3
Input x:00110101
4
C:\MASM>l3
Input x:00110110
6
C:\MASM>