Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача со строкой, вывести первую половину и вторую половин 
:(
    Опции темы
tatu
Дата 21.11.2010, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.12.2009

Репутация: нет
Всего: -1



Код

STACKS SEGMENT PARA STACK 'STACK'    
    DB 512 DUP   (?)
STACKS ENDS

DATA SEGMENT PARA 'DATA'
    
    STR1 DB  'vvodim stroku $'
        STR2 DB  'vsya stroka $'
    STR3 DB  'pervaya polovina $'
        STR4 DB  'vtoraya polovina $'
        BUF DB 80,?,80 DUP ('$')
    
DATA ENDS

CODE SEGMENT PARA PUBLIC 'CODE'
    ASSUME CS:CODE,DS:DATA,SS:STACKS

entr PROC NEAR ;процедура перехода на новую строку
         MOV AH,2
     MOV DL,13
     INT 21H
     MOV DL,10
     INT 21H
     RET
entr ENDP     

MAIN PROC FAR;  
    MOV AX,DATA
    MOV DS,AX
        ;-----------------
    MOV AH,9                ;код функции (вывод строки)
    MOV DX,OFFSET STR1                   
        INT 21H
        ;-----------------

    CALL entr  ; Переход на новую строку

    MOV AH,0AH; 
    MOV DX,OFFSET BUF;  это работа с буфером, его заполняем строкой
        INT 21H

        MOV AH,9
    MOV DX,OFFSET STR2    ;выводим строку через функцию №9
        INT 21H

    ;CALL entr  ; Переход на новую строку

        
    MOV AH,9
    MOV DX,OFFSET BUF+2;  вывод буфера на экран
        INT 21H
    
       
        
    CALL entr  ; Переход на новую строку
        MOV AH,9
    MOV DX,OFFSET  STR3   ; выводим строку через функцию №9
        INT 21H

        MOv AX,0
        MOV AL,BYTE PTR BUF+1        ;помещение длины строки в AX
        MOV BL,2                ;делитель
        DIV BL                    ;деление длины строки на 2
        MOV BL,AL                ;частное 
        ADD  AL,AH                ; остаток
        ADD BX,OFFSET BUF+2        ; центральный символ
        MOV CX,[BX]                ;сохранение центрального Cимвола
        MOV BYTE PTR [BX],'$'            ;замена центрального символа на '$'

      
        MOV AH,9H                 ;код функции (вывод строки)
        MOV DX, OFFSET BUF+2
        INT 21h
         ;-----------------
        CALL entr  ; Переход на новую строку
        MOV AH,9
    MOV DX,OFFSET  STR4   ; выводим строку через функцию №9
        INT 21H
        ;----------------------------------------------
        
        MOV [BX],CX                ;возврат замененного символа на прежний
        MOV DX,BX    
        INT 21h
    MOV AH,4CH
    INT 21H

MAIN ENDP
CODE ENDS
END MAIN


выделенный код кто-нибудь может пояснить

как я понял мы ищем адресс серединного символа
PM MAIL   Вверх
iff
Дата 21.11.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 4
Всего: 16



Да. А его значение сохраняем СХ.

П.С. 66-ая строка не нужна


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
tatu
Дата 28.11.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 13.12.2009

Репутация: нет
Всего: -1



ага, спасибо разобрался;)))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.