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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 19:42   #1
FreedomFighter
Новичок
Джуниор
 
Регистрация: 26.05.2009
Сообщений: 2
По умолчанию Не работает программа (ввод вывод текста)

Код:


Код:
.286
     TITLE    EXMOVE (EXE)   ђ*биЁаҐ***п ЇҐаҐбл«Є*
     ;-------------------------------------------------------
     STACKSG  SEGMENT  PARA  STACK  'Stack'
              DW       32  DUP(?)
     STACKSG  ENDS
     ;-------------------------------------------------------
     DATASG   SEGMENT  PARA  'Data'
     NAME1    DB       'ABCDEFGHI'
     NAME2    DB       'JKLMNOPQR'
     NAME3    DB       'STUVWXYZ*'
     DATASG   ENDS
     ;--------------------------------------------------------
     CODESG   SEGMENT  PARA  'Code'
     BEGIN    PROC     FAR
              ASSUME   CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
              PUSH     DS            ;‡*ЇЁб*вм DS ў б⥪
              SUB      AX,AX         ;‡*ЇЁб*вм ў б⥪
              PUSH     AX            ;*г«Ґў®© *¤аҐб
              MOV      AX,DATASG     ;Џ®¬ҐбвЁвм *¤аҐб DATASG
              MOV      DS,AX         ;ў ॣЁбва DS
              MOV      ES,AX
              CALL     B1OMOVE       ;‚л§ў*вм Ї/Ї
              CALL     C1OMOVE       ;‚л§ў*вм Ї/Ї
              RET                    ;‚Ґа*гвмбп ў DOS
     BEGIN    ENDP

     ;        ђ*биЁаҐ***п ЇҐаҐбл«Є*,
     ;        ЁбЇ®«м§гой*п ЇҐаҐе®¤ Ї® гб«®ўЁо:
     ;------------------------------------------------------------
     B1OMOVE  PROC
              LEA      SI,NAME1       ;€*ЁжЁ*«Ё§*жЁп *¤аҐб®ў
              LEA      DI,NAME2       ;NAME1 Ё NAME2
              MOV      CX,09          ;ЏҐаҐб«*вм 9 бЁ¬ў®«®ў
     B20:     MOV      AL,[SI]        ;ЏҐаҐб«*вм Ё§ NAME1
              MOV      [DI],AL        ;ЏҐаҐб«*вм ў NAME2
              INC      SI             ;‘«Ґ¤гой.бЁ¬ў.ў NAME1
              INC      DI             ;‘«Ґ¤гой.Ї®§. ў NAME2
              DEC      CX             ;“¬Ґ*миЁвм бз. жЁЄ«*
              JNZ      B20            ;‘зҐвзЁЄ > 0? „*-жЁЄ«
              RET                     ;…б«Ё бзҐвзЁЄ = 0, в® ўҐа*гвмбп
     B1OMOVE  ENDP

     ;        ђ*биЁаҐ***п ЇҐаҐбл«Є*,
     ;        ЁбЇ®«м§гой*п Є®¬**¤г LOOP
     ;----------------------------------------------------------------
     C1OMOVE  PROC
              LEA      SI,NAME2        ;€*ЁжЁ*«Ё§*жЁп *¤аҐб®ў
              LEA      DI,NAME3        ;NAME2 Ё NAME3
              MOV      CX,09           ;ЏҐаҐб«*вм 9 бЁ¬ў®«®ў
     C20:     MOV      AL,[SI]         ;ЏҐаҐб«*вм Ё§ NAME2
              MOV      [DI],AL         ;ЏҐаҐб«*вм ў NAME3
              INC      SI              ;‘«Ґ¤гой.бЁ¬ў.ў NAME2
              INC      DI              ;‘«Ґ¤гой.Ї®§. ў NAME3
              LOOP     C20             ;“¬Ґ*миЁвм бзҐвзЁЄ,
                                       ;Ґб«Ё *Ґ 0, в® жЁЄ«
              RET                      ;…б«Ё бзҐвзЁЄ = 0, в® ўҐа*гвмбп
     C1OMOVE  ENDP
     CODESG   ENDS
              END      BEGIN
Эта прога выдает лат. алфавит и *. помогите сделать так чтобы четные буквы обнулились, короче: было ABCDEFGHIJKLMNOPQRSTUVWXYZ* должно быть A.C.E.G.I.K.M.O.Q.S.U.W.Y.*

Помогите плиз....

иероглифы - это коменты, глюк кодировки, не суть важно...

Последний раз редактировалось rpy3uH; 29.05.2009 в 13:59.
FreedomFighter вне форума Ответить с цитированием
Старый 29.05.2009, 12:53   #2
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

У тебя в сегменте данных определены данные

NAME1 DB 'ABCDEFGHI'
NAME2 DB 'JKLMNOPQR'
NAME3 DB 'STUVWXYZ*'

Вместо этого ты можешь определить

NAME1 DB 'A.C.E.G.I'
NAME2 DB '.K.M.O.Q.'
NAME3 DB 'S.U.W.Y.*'

Вникаешь?
Можно вопрос - что это за ассамблер, и как может пригодится такая прога?
BaronTreep вне форума Ответить с цитированием
Старый 01.06.2009, 19:49   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

MOV AL,[NAME+2]
MOV [NAME+2],AL
Т.е. мы должны брать элемент из массива и прибавляем 1 и выводим на экран. пример: A+2=C, C+2=E, и т.д.

Цитата:
что это за ассамблер, и как может пригодится такая прога?
Это обычный TASM/MASM
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 02.06.2009 в 18:41.
MalCer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00
Консольная программа на Си: ввод, вывод, сортировка, сохранение в текстовый файл. zerg Помощь студентам 8 16.11.2007 12:57