hello world)

Тема в разделе "WASM.BEGINNERS", создана пользователем bggg, 28 май 2007.

  1. bggg

    bggg New Member

    Публикаций:
    0
    добрый день.помогите написать хело ворлд с помощью movsb. спасибо.
     
  2. Otebebe

    Otebebe New Member

    Публикаций:
    0
    bggg
    movsb копирует строку DS:SI-->ES:lol: I
    т.е потом ее надо будет каким-то образом "забирать" daже если ES=DS.
    Зачем может понадобиться такой хитрый ход ?
     
  3. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Может имелся ввиду прямой вывод в видеопамять?
     
  4. bggg

    bggg New Member

    Публикаций:
    0
    Vov4ick
    да. прямой вывод в видеопамять.
     
  5. censored

    censored New Member

    Публикаций:
    0
    bggg
    Код (Text):
    1. hw db 'hello, world!', 0
    2. ...
    3. mov ax, 0xb800
    4. mov es, ax
    5. mov si, offset hw
    6. xor di, di
    7. __1:
    8. lodsb
    9. or al, al
    10. jz __2
    11. stosb
    12. inc di
    13. jmp short __1
    14. __2:
     
  6. bggg

    bggg New Member

    Публикаций:
    0
    censored
    спасибо но нужно что бы использовалось именно movsb, не пойму как это сделать...
     
  7. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Код (Text):
    1. mov ax,0b800h
    2. mov es,ax
    3. mov si,offset string
    4. mov di, смещение в видеопамяти
    5. mov cx, длина строки
    6. cld
    7. rep movsb
    В этом случае строка должна иметь вид: символ, атрибут, символ, атрибут,.........
    string db 'H',7,'e',7,'l',7,........
     
  8. bggg

    bggg New Member

    Публикаций:
    0
    подходит. а что это за смещение в видеопамяти? и что это за атрибут если не трудно поясните...
     
  9. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Атрибут символа. Работает так:
    Код (Text):
    1. 01111010b
    2. irgbIRGB
    3. │││││││└─ Синяя компонента цвета символа
    4. ││││││└── Зелёная компонента цвета символа
    5. │││││└─── Красная компонента цвета символа
    6. ││││└──── Бит яркости символа
    7. │││└───── Синяя компонента цвета фона
    8. ││└────── Зелёная компонента цвета фона
    9. │└─────── Красная компонента цвета фона
    10. └──────── Бит яркости фона, либо флаг мигания символа
    11.           (зависит от настройки видеокарты)
    12. Таким образом в примере - тёмно-белый фон и ярко-зелёный символ
    13. ЗЫ Тёмно-белый светлее светло-чёрного ;-)
    Смещение в видеопамяти рассчитывается из того, что её структура такова, что за байтом символа следует байт его атрибута и так далее. Причём нулевому смещению соответствует левый верхний угол экрана, смещение растёт по строкам:
    Код (Text):
    1. ------------
    2. |--------->|
    3. |--------->|
    4. |--------->|
    5. |--------->|
    6. ------------
    Стандартный атрибут в консоли - 07, то есть тёмно-белый текст на чёрном фоне.