Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление заданной подстроки в строке

21K
23 октября 2006 года
shady-s
7 / / 23.10.2006
Ребята!!! Помогите с задачей.

Всего-то навсего нужно перевести код с си++(который я уже написал) на ассемблер:

Код:
#include <iostream>
using namespace std;

char* chStr = "mixHello,mix worldmix!!!mix";
char* chSub = "mix";

void main(){
    bool comp;
    char pchRes[250];
    char* chRes = pchRes;
    int r=0, j;
   
    for(int i=0; *(chStr+i)!=0; i++){
        comp=true;
        for(j=0; *(chSub+j)!=0; j++){
            if(*(chSub+j)!=*(chStr+i+j)){
                comp=false;
                break;
            }
        }
        if(comp==true) i+=j-1;
        else{
            *(chRes+r)=*(chStr+i);
            r++;
        }
    }
    *(chRes+r)=0;
    cout << chRes;
    cin.get();
}


И вот вопрос:
- Как в регистр al записать допустим 6-й символ строки?

Начало программы по ходу должно выглядить так:
Код:
ideal
    p586
    model flat

extrn   ExitProcess:proc
extrn   MessageBoxA:proc

dataseg

    chStr   db  "mixHello,mix worldmix!!!mix", 0
    chSub   db  "mix", 0
    chRes   db  0
    sTitle  db  "SPIOS.012",0
    sText   db  0
    i   db  0
    j   db  0


codeseg
334
23 октября 2006 года
HexEdit
809 / / 27.07.2006
записать в al 6й символ строки можно
 
Код:
mov al, [chStr+6]


либо с помощью таблицы
 
Код:
mov ebx, offset chStr      ; адрес строки
       ...
       mov al, 6     ; 6й символ
       ...
       xlat        ; собссно ds:[ebx+al] -> AL
21K
23 октября 2006 года
shady-s
7 / / 23.10.2006
ээээ...

ну эт я писал.... эээ....

скажем есть

 
Код:
str db "Hello world",0
i dd 6


Как в al записать i-й символ строки?
334
23 октября 2006 года
HexEdit
809 / / 27.07.2006
 
Код:
mov ebx, offset chStr      ; адрес строки
       ...
       mov al,
       xlat


или я чего то не понял?
21K
23 октября 2006 года
shady-s
7 / / 23.10.2006
у тя есть аська? мы можем поговорить в риал онлайн?

вроде получилось. вроди понял. ну тут следущая загвоздка...
334
23 октября 2006 года
HexEdit
809 / / 27.07.2006
Давай - 390-326-779
21K
23 октября 2006 года
shady-s
7 / / 23.10.2006
Код:
ideal
    p586
    model flat

extrn   ExitProcess:proc
extrn   MessageBoxA:proc

dataseg

    chStr   db  "mixHello,mix worldmix!!!mix", 0
    chSub   db  "mix", 0
    chRes   db  0
    sTitle  db  "SPIOS.012", 0
    sText   db  "Equal", 0
    i   db  0
    j   db  0


codeseg

main:
       
fori:  
    mov , 0
    mov ebx, offset chStr
    mov al,
    xlat
forj:
    mov ecx, offset chSub
    mov ah, [j]
    xlat   
    cmp al, 0
    inc
    je  fori

    push    0 offset sTitle offset sText 0
    call    MessageBoxA
fin:
    call    ExitProcess
end main
21K
23 октября 2006 года
shady-s
7 / / 23.10.2006
Код:
ideal
    p586
    model flat

extrn   ExitProcess:proc
extrn   MessageBoxA:proc

dataseg

    chStr   db  "mixHello,mix worldmix!!!mix", 0
    chSub   db  "mix", 0
    chRes   db  100 dup(0)
    sTitle  db  "SPIOS.012", 0
    i   db  0
    j   db  0
    r   db  0
    comp    db  0


codeseg

main:
    mov [r], 0 
    mov , 0
fori:  
    mov [j], 0
    mov [comp],1
forj:
    mov ebx, offset chStr
    mov al,
    xlat
    add al, [j]    
    mov ecx, offset chSub
    mov ah, [j]
    xlat   
   
    cmp al, ah
    jz  jcmp   
    mov [comp],0
    jmp forj_
jcmp:  
    inc [j]
    test    ah,ah
    jz  forj
forj_:
    cmp [comp],0
    jz  cmpf
cmpt:   mov bl,
    add bl, [j]
    dec bl
    mov , bl   
    jmp cmpe
cmpf:  
    mov ebx, offset chStr
    add ah,
    xlat
    mov al, ah
    mov ebx, offset chRes
    add ah, [r]
    xlat
    mov ah, al
    inc [r]
cmpe:
    inc
    test    al,al
    jz  fori

    mov     ebx, offset chRes
    add ah, [r]
    xlat
    mov ah, 0

    push    0 offset sTitle offset chRes 0
    call    MessageBoxA
fin:
    call    ExitProcess
end main
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог