Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2009, 19:52   #11
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию

все, ничего не получается.
как вывести номер позиции символа в сроке для моего кода незнаю.
Цитата:
;Дан массив состоящий из букв и цифр. Подсчитать в нем колличество букв и цифр. нужна оптимизация

.model small
.386
.Stack 100h
.data
CR EQU 0Dh
LF EQU 0Ah

sLet1 DB 'Введите символ: $'
sLet2 DB 'Введенный символ занимает позиции в строке: $', LF, CR

Msg1 DB 'Исходное предложение: $', LF, CR
Arr DB 'h3llo 12345 w0rld hkjdf3hgjkdfghjkd3fghdf3jkghdfj',LF , CR, '$'
Arr1 DB 42 dup (?)
ArrLen = $ - Arr
CharCode db 5 dup(?)

;bDigits db 0

;Result DB "000", "$"
;Result1 DB '0','$'
;Result2 DB 1
.code
start:
mov AX, @data
mov DS, AX
mov CX, ArrLen
mov di, offset Arr
mov DX, offset sLet1
mov AX, 0900h
int 21h
mov ah,10h
int 16h
mov CharCode,al
mov DX, offset CharCode
mov AX, 0900h
int 21h
;xor cx,cx
L1:
;mov al,Result1
;add al,1
;mov Result1,al
mov al, [di]
cmp AL, CharCode
je L2
jmp L3
L2:
mov DX, Result1
;mov AX, 0900h
int 21h
L3:
mov Arr1[di], al
inc di
loop L1

mov DX, offset Msg1
mov AX, 0900h
int 21h

mov DX, offset Arr
int 21h

mov DX, offset Arr1
mov AX, 0900h
int 21h

mov DX, offset sLet2 ;¤ыхьхэЄют Ёртэvї ўшёыє 3
int 21h

mov AX, 4C00h
int 21h
по метки L2 нужно впихнуть код которий будет выводить номер позиции символа
eu8cc вне форума Ответить с цитированием
Старый 06.06.2009, 20:39   #12
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию

Вот, окультурил немного:
Кто поможет? Что написать по метки L2 чтобы выводилась занимаемая позиция символа в строке?
Цитата:
.model small
.386
.Stack 100h
.data
CR EQU 0Dh
LF EQU 0Ah

sLet1 DB LF, CR,'Введите символ: $'
sLet2 DB 'Введенный символ занимает позиции в строке: $', LF, CR

Msg1 DB 'Исходное предложение: $', LF, CR
Arr DB 'h3llo 12345 w0rld hkjdf3hgjkdfghjkd3fghdf3jkghdfj',LF , CR, '$'
Arr1 DB 42 dup (?)
ArrLen = $ - Arr
CharCode db 5 dup(?)

.code
start:
mov AX, @data
mov DS, AX
mov CX, ArrLen
mov di, offset Arr

push ds
push cx
push di
push dx
push si

mov DX, offset Msg1
mov AX, 0900h
int 21h

mov DX, offset Arr
int 21h

mov DX, offset sLet1
mov AX, 0900h
int 21h
xor al,al
mov ah,10h
int 16h
mov CharCode,al
mov si, offset CharCode+1
mov ax,0
mov al,[si]
add si, ax
mov byte ptr[si+1],'$'
mov DX, offset CharCode
mov AX, 0900h
int 21h

push si
push dx
push di
push cx
push ds

L1:
mov al, [di]
cmp AL, CharCode
je L2
jmp L3
L2:
mov DX, di
mov AX, 0900h
int 21h

L3:
mov Arr1[di], al
inc di
loop L1

mov AX, 4C00h
int 21h

Последний раз редактировалось eu8cc; 06.06.2009 в 20:47.
eu8cc вне форума Ответить с цитированием
Старый 07.06.2009, 01:05   #13
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию

Привожу рабочий исходник проги, плохо что приходится расчитовать только на себя
Цитата:
.model small
.386
.Stack 100h
.data
CR EQU 0Dh
LF EQU 0Ah

sLet1 DB CR, LF,'Введите символ: $'
sLet2 DB 'Позиции занимаемые введенным символом в строке: $', CR, LF
sLet3 DB ' $'
Msg1 DB 'Исходное предложение: $', CR, LF
Arr DB 'h3llo 12345 w0rld hkjdf3hgjkdfghjkd3fghdf3jkghdfj',CR , LF, '$'
Arr1 DB 42 dup (?)
ArrLen = $ - Arr
CharCode db 5 dup(?)
Result db '000','$'
bDigits db 0
.code
start:
mov AX, @data
mov DS, AX
mov CX, ArrLen
mov di, offset Arr

mov DX, offset Msg1
mov AX, 0900h
int 21h

mov DX, offset Arr
int 21h

mov DX, offset sLet1
mov AX, 0900h
int 21h
xor al,al
mov ah,10h
int 16h
mov CharCode,al
mov si, offset CharCode+1
mov ax,0
mov al,[si]
add si, ax
mov byte ptr[si],13
mov byte ptr[si+1],10
mov byte ptr[si+2],'$'
mov DX, offset CharCode
mov AX, 0900h
int 21h
mov DX, offset sLet2
mov AX, 0900h
int 21h

L1:
inc bDigits
mov al, [di]
cmp AL, CharCode
je L2
jmp L3
L2:
mov al, bDigits
mov dx, offset Result
call ToDecimal
mov AX, 0900h
int 21h
mov dx, offset sLet3
int 21h
L3:
mov Arr1[di], al
inc di
loop L1

mov ah,10h
int 16h
mov AX, 4C00h
int 21h

ToDecimal proc
push DX
push DI
mov DI, DX
mov AH, 0
mov BL, 10
push -1
ToDecimalLoop01:
cmp AL, 0
je ToDecimal01
mov AH, 0
div BL
add AH, "0"
mov DX, 0
mov DL, AH
push DX
jmp ToDecimalLoop01
ToDecimal01:
pop AX
cmp AL, -1
je ToDecimalQuit
mov [DI], AL
inc DI
jmp ToDecimal01
ToDecimalQuit:
mov DS:[DI], byte ptr "$"
pop DI
pop DX
ret
ToDecimal endp

end start
eu8cc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодом DM_bite Помощь студентам 12 02.08.2008 11:40
Помогите с кодом Кронос Общие вопросы Delphi 6 04.05.2008 21:13
Помогите с кодом prostoCHEL Общие вопросы Delphi 4 02.03.2008 21:56