На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Вывод строки без использов INT'ов , Для чайника
    В ассемблере я полный чайник. Начал учить, нифига не получается.
    Захотел написать на экран строку напрямую через память без int'ов.
    Потом дополнил очисткой и ожиданием нажатия клавиши.
    Помогите кто может, почему нормально моя строка не выводится

    ExpandedWrap disabled
      assume es: code, cs: code
      org 100h
       
      code segment
       string db "HELLO!"
       str_ln =  $-string
      main:
       mov AX, 0B800h
       mov ES,AX
       
       mov CX,str_ln
       mov SI,0
       mov DH, 10h
       
      @@one:
       mov DL, string[SI] ; Почему вместо буквы с индексом SI у меня какая-то
                          ; билеберда на экране
       
       mov ES:[SI],DX ; почему когда пишу 0B800h - не работает, хотя отладчик
                      ; показовает в ES значение 0B800h
       
       inc SI
       inc SI
       dec CX
       jnz    @@one
       
       mov BX, 6
       mov CX, 3992
      @@two:
       inc BX
       inc BX
       mov byte ptr ES:[BX],' '
       mov byte ptr ES:[BX+1],00h
       dec CX
       dec CX
       jnz    @@two
       
       mov AH,0
       int 16h
       
       mov AH, 4Ch
       mov AL,00h
       int 21h
       
      code ends
       
      stk segment stack
      stk ends
       
      end main
      Немножко модифицировал прогу, но почему-то обратиться к элементу из массива символов по индексу не удается
      ExpandedWrap disabled
        assume es: code, cs: code
        code segment
         
        main:
              mov AX, 0B800h
              mov DS,AX
         
              jmp short res
              string db "HELLO!"
              str_ln =  $-string
              res:
         
              mov BX, offset string
              mov DI, 0
              mov CX, str_ln
         
        next:
              mov dl, [BX][DI]       ; Вот тут что-то не идет!!!
              mov byte ptr [DI], dl
              mov byte ptr [DI+1], 02h
              add DI, 2
         loop next
         
         ; Ждем нажатия клавиши
         mov AH,0
         int 16h
         
         ; Выход в дос
         mov AX, 4C00h
         int 21h
         
        code ends
         
        stk segment stack
         db 256 dup (?)
        stk ends
         
        end main

      Помогите плиз.
      Сообщение отредактировано: Du-Xa -
        Мда, оригинально... mov dl,[BX][DI] у тебя не будет работать, во-первых, потому, что ты читаешь из сегмента ds=B800h, а не из cs, где у тебя строка, а во-вторых, ты увеличиваешь di сразу на два, поэтому читать будешь только каждый второй байт.
        ExpandedWrap disabled
          .MODEL Tiny
          .CODE
          ORG     100h
           
          SMART
          LOCALS
           
          Start:
           
                          mov     ax,0B800h
                          mov     es,ax
                          xor     di,di
                          lea     si,String
                          mov     cx,lString
                          mov     ah,14          ; Цвет
                          cld
          @@Repeat:       lodsb
                          stosw
                          loop    @@Repeat
           
                          xor     ah,ah
                          int     16h
           
                          int     20h
           
          String          db      'Hello!'
          lString         =       $-String
           
          END             Start
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0760 ]   [ 15 queries used ]   [ Generated: 20.04.24, 00:15 GMT ]