Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись значения по адресу 
V
    Опции темы
AlexST
Дата 11.12.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

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



Ребят, помогите разобраться.
Ввожу в строчку fam фамилию, например "Быков" (без кавычек).
Хочу затереть пробелом оставшийся в строке #13. Он стоит на 7 позиции, т. е. fam+7 его адрес.
Имя самой строки sf. Её размер rf.

Код

.model    small    
.stack    100h    
.code
start:  mov    ax,DGROUP
    mov    ds,ax    ; помещается в DS
    mov    es,ax

    mov    ah,0
    mov    al,3
    int    10h 

    mov    dl,5 ;ввод фамилии
    mov    dh,5
    call    pk
    mov    dx,offset fam
    mov    ah,0ah
    int    21h 

    ;затираем
    
         
    mov    [fam+7],' '; тут проблема

    mov    al,fam+7;печатаем 8 или 7 бит
    mov    ah,0
    call    decas;процедура перевода числа в строку- смотрим код символа

    mov    dl,1
    mov    dh,18
    call    pk
    lea    dx,asc+2
    mov    ah,9
    int    21h 

    mov    ah,08h
    int    21h 
    mov    ax,4C00h
    int    21h    

pk    proc ;dh,dl
    mov    ah,2
    mov    bh,0
    int    10h
    ret
pk    endp
decas    proc ; ax,10
    mov    cx,10
    lea    si,s-1
    mov    [si+1],' '
    mov    [si+2],' '
    mov    [si+3],' '
    mov    [si+4],' '
    mov    bx,5
b:    cmp    ax,10
    jb    e
    mov    dx,0
    div    cx
    or    dl,30h
    mov    [si+bx],dl
    dec    bx
    jmp    b
e:    or    al,30h
    mov    [si+bx],al
    ret
decas    endp
.data
s2    db      "Введите вашу фамилию:$"
s1    db      "Введите ваш номер:$"
s3    db      "Пароль не верен$"
s4    db      "Пароль верен$"
pas  label    byte
mp   db    2
rp    db    ?
sp    db    2 dup (' '),'$'
fam    label    byte
mf    db    11
rf     db    ?
sf     db    10 dup (' '),'$'
asc    label    byte
m     db    10
r      db    ?
s     db    10 dup (' '),'$'
zap    dw    5
mn    dw    1
vch    dw    0
hand    dw    ?
cod    db    10 dup (' ')
cod2    db    10 dup (' '),'$'
adr    db    "d.txt",0
buf    db    10 dup (' '),'$' 
bufr1    dw    ?
bufr2    dw    ?
bufr3    dw    ?
seed    dw    ?
srand    db    10 dup (' '),'$'
pass    db    10 dup (' '),'$'
    end    start



Так вот, если я пишу mov [fam+7],' ' - то всё нормально.
А если:

Код

    lea    si,fam
    add    si,7
    mov    [si],' '

или
Код

    lea    bx,sf
    mov    al,rf
    mov   ah,0
    mov   si,ax
    mov    [bx+si],' '

ещё как-нибудь. То 8 бите оказывается 0... Откуда он там берётся?  smile 

Это сообщение отредактировал(а) AlexST - 11.12.2006, 14:44
PM MAIL ICQ   Вверх
sgi1981
Дата 11.12.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 10



Надо уточнять размер непосредственного операнда
Код

mov  byte ptr  [si],' '
;------------
mov byte ptr [bx+si],' '

иначе компилятор воспримет код пробела не как однобайтное число, а как двухбайтное или четырехбайтное.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
AlexST
Дата 11.12.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

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



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

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

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


 




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


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

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