Цикл на асме

Тема в разделе "WASM.BEGINNERS", создана пользователем nitagor, 15 июн 2007.

  1. nitagor

    nitagor New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    2
    мне нужно в цикле опускаться на одну строчку вниз и выводить некоторый символ. вот что я набросал, но что-то не получается...
    left_wall:
    mov cx, 7
    mov ah, 02
    mov bh, 00
    mov dh, addr s ;stroka
    mov dl, 34
    int 10h
    inc s

    mov ah, 09h
    lea dx, stenki
    int 21h
    loop left_wall

    что можете посоветовать?
     
  2. CrazyFun

    CrazyFun New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    129
    я бы сделал так:
    Код (Text):
    1. mov cx, 7
    2. mov s,0
    3. left_wall:
    4.     mov ah, 02
    5.     mov bh, 00
    6.     mov dh, s    
    7.     mov dl, 0 ;или друго столбец
    8.     int 10h
    9.     inc s
    10.  
    11.     mov ah, 09h
    12.     mov al,'z'
    13.     mov bl,2
    14.     push cx
    15.     mov cx,1
    16.     int 21h
    17.     pop cx
    18. loop left_wall
    это если не пытаться оптимизировать существующий код, рапихивая все переменные по регистрам и не отказываясь от loop
     
  3. nitagor

    nitagor New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    2
    пасиб, я случайно запихнул mov cx, 7 в сам цикл :)
     
  4. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Я тоже циклы изучал - вот мой первый опыт:
    Код (Text):
    1. global _start
    2.  
    3.  _start:
    4.  
    5. push 4
    6. lb:
    7.  
    8. mov eax, 04h
    9. mov ebx, 02h
    10. mov ecx, dir
    11.  
    12. mov edx, dirl
    13. int 0x80
    14. pop ecx;
    15. cmp ecx, 0
    16. jz exit
    17. dec ecx
    18. push ecx
    19. loop lb
    20. exit:
    21.  mov eax, 01h
    22.   int 0x80
    23.  
    24.  section .data
    25.  dir: db 'Эта строка будет выведена три раза',0x0a,0
    26.  dirl: equ $-dir