Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по коду 
:(
    Опции темы
herty
Дата 25.2.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Решил вот поэксперементировать и без книги написать программу, которая переделает мне большие буквы в маленькие.
Цитата

.model tiny
.CODE
ORG 100
jmp go
;--------------------------------
nike db 'JUST DO IT', '$'
;--------------------------------
GO proc FAR
LEA bx, nike
mov cx,9h

tt:
mov al,[bx]
cmp al,41h ; esli mense to eto uze ne bukva
JB perehod
cmp al,61h  ; esli bolse ili ravno, to eto uze malenjkaja bukva
JAE perehod
add [bx],20h ;raznica mezdu bolsoj i malenjkoj v asII 20h

perehod:
inc bx
LOOP tt
mov ah,09
LEA dx,nike
int 21
GO ENDP
END GO

и в строчке с (add [bx],20h) у меня ошибочка!!! Соответственно у меня вопрос! В чём же дело? smile
Ну и походу дела, хотелось бы всё таки знать LEA dx,nike и MOV dx,nike в данном примере будет ли одно и тоже?
PM MAIL   Вверх
Akina
Дата 25.2.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(herty @ 25.2.2006, 22:04 Найти цитируемый пост)
в строчке с (add [bx],20h) у меня ошибочка!!!

Компилятор не знает к какому типу данных ты обращаешься, и полагает что это слово. Должно быть
Код
add byte ptr [bx],20h
или около того - проконсультируйся с диалектом компилятора.

Цитата(herty @ 25.2.2006, 22:04 Найти цитируемый пост)
LEA dx,nike и MOV dx,nike в данном примере будет ли одно и тоже?

Судя по коду ты собираешь его в СОМ-файл. Тогда да, одно и то же, при условии что твой компилятор не забубенит во втором варианте в DX слово из переменной вместо ее адреса (кстати, имеет право...). Есть и еще вариант - MOV dx,offset nike


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
herty
Дата 26.2.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо! с com вроде разобрался. Теперь чуток усложнил задачку - захотел это всё сделать для ехе. ВОТ как это дело выглядит теперь:
Цитата

TITLE NIKE - JUST DO IT

STACK segment PARA STACK 'Stack'
dw 32 dup(0)
STACK ENDS


DATASEG SEGMENT PARA 'Data'
nike db 'JUST DO IT', '$'
DATASEG ENDS


CODESEG SEGMENT PARA 'Code'

body PROC FAR
ASSUME SS:STACK, DS:DATASEG, CS:CODESEG
mov ax,dataseg
mov ds,ax

LEA bx, nike
mov cx,0bh

tt:
mov al,[bx]
cmp al,41h ; esli mense to eto uze ne bukva
JB perehod
cmp al,61h  ; esli bolse ili ravno, to eto uze malenjkaja bukva
JAE perehod
add al,20h
mov [bx],al ;tak ka raznica mezdu bolsoj i malenjkoj v asII 20h

perehod:
inc bx
LOOP tt
mov ah,09h
LEA dx,nike
int 21H
mov ah,4Ch
int 21H
body ENDP
CODESEG ENDS

END  body

И вот работает, но не каректно!(в строчке появляется всякая ерунда) Вопрос: кто знает почему??
PM MAIL   Вверх
herty
Дата 26.2.2006, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У-пссс Всё работает! просто был нечайно сгенерирован бат файл и дос его запускал вместо ехе!
PM MAIL   Вверх
Akina
Дата 26.2.2006, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(herty @ 26.2.2006, 02:30 Найти цитируемый пост)
STACK segment PARA STACK 'Stack'
dw 32 dup(0)
STACK ENDS

Больше никогда так не делай. В стеке за вершиной должно быть не менее 128 байт - для того чтобы аппаратные прерывания не разрушили лишнего.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
sgi1981
Дата 18.3.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



add al,20h
mov [bx],al ;tak ka raznica mezdu bolsoj i malenjkoj v asII 20h

Неправильно, увы.
Вспомни, что буква может быть и маленькая.

А так правильно, как Вы думаете ?
smile
Код

or al, 20h
mov [bx], al


И можно я твой фрагмент кода немножечко усовершенствую ?

Вот так вот...
Код

;*********************ZVEZDOCHKI - Eto tvoy cod
LEA si, nike 
cld
tt: 
lodsb
cmp al, '$';
jz en;konec stroki - eto $ bait
cmp al, 41h ; esli mense to eto uze ne bukva
JB tt
cmp al, 7Ah 
JA tt
cmp al, 5Bh
jb p1
cmp al, 60h
ja p1
jmp tt
p1:or [si-1], 20h ; malenkaya bykva otlichaensa ot bolshoy edinichnim 5 bitom 
jmp tt
en:
;*********************ZVEZDOCHKI - Eto tvoy cod


Теперь и маленькие... учитываются.


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

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

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


 




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


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

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