Menu(Choice).DOS

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

  1. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    Чтобы выглядело примерно как Boot Menu в Win98.
    Может быть кто-то писал что-то подобное ?
    Если не жалко одарите плиз.(исходником).
     
  2. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    Может непонятно объясняю чего нужно... :dntknw:
    Menu: (goroda okolo Kudy'mkara)

    1.Barnaul
    2.Moskva
    >3.Tsaregrad
    4.Kabul

    >--обозначает подсвеченность.

    Ударили по ENTER ушли на исполнение п.Цареград....
    Установили на п.2 и ЕNTER --->уходим делать п.Москва.

    Неужто самому придется ... :) ?
     
  3. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    Может, и придётся :)
    Когда-то делал щось подобное - смотрите, разбирайтесь.
    Код (Text):
    1.         .186
    2. num     equ     4
    3. len     equ     0Ch
    4. dseg    segment use16
    5. head    db      'Menu'
    6. p1      db      'Barnaul     '
    7. p2      db      'Moskva      '
    8. p3      db      'Tsaregrad   '
    9. p4      db      'Kabul       '
    10. offs    dw      offset o1, offset o2, offset o3, offset o4
    11. dseg    ends
    12. cseg    segment use16
    13.         assume  cs: cseg, ds: dseg, ss: sseg
    14. cls:    push    ax
    15.         push    cx
    16.         push    di
    17.         xor     di, di
    18.         mov     cx, 07D0h
    19.         mov     ax, 0720h
    20.     rep stosw
    21.         pop     di
    22.         pop     cx
    23.         pop     ax
    24.         ret
    25. draw:   push    ax
    26.         push    cx
    27.         push    dx
    28.         push    di
    29.         mov     ax, 00A0h
    30.         mul     bp
    31.         mov     di, ax
    32.         inc     di
    33.         mov     al, cl
    34.         mov     cx, len
    35. @sl:    stosb
    36.         inc     di
    37.         loop    @sl
    38.         pop     di
    39.         pop     dx
    40.         pop     cx
    41.         pop     ax
    42.         ret
    43. sel:    push    cx
    44.         mov     cl, 20h
    45.         call    draw
    46.         pop     cx
    47.         ret
    48. unsel:  push    cx
    49.         mov     cl, 70h
    50.         call    draw
    51.         pop     cx
    52.         ret
    53. @:      mov     ax, 3
    54.         int     10h
    55.         mov     ah, 1
    56.         mov     cx, 2000h
    57.         int     10h
    58.         mov     ax, dseg
    59.         mov     ds, ax
    60.         push    0B800h
    61.         pop     es
    62.         cld
    63.         mov     cx, offset p1 - offset head
    64.         mov     ah, 07h
    65.         lea     si, head
    66.         xor     di, di
    67. @1:     lodsb
    68.         stosw
    69.         loop    @1
    70.         mov     di, 0A0h
    71.         mov     cx, num
    72.         mov     ah, 70h
    73. @2:     push    cx
    74.         mov     cx, len
    75. @3:     lodsb
    76.         stosw
    77.         loop    @3
    78.         add     di, 0A0h - 2 * len
    79.         pop     cx
    80.         loop    @2
    81.         mov     bp, 1
    82.         call    sel
    83. @ml:    mov     ah, 08h
    84.         int     21h
    85.         cmp     al, 0Dh
    86.         je      @done
    87.         ;cmp    al, 1Bh
    88.         ;je     @escaped
    89.         test    al, al
    90.         jnz     @ml
    91.         mov     ah, 08h
    92.         int     21h
    93.         cmp     al, 48h
    94.         jne     @4
    95.         cmp     bp, 1
    96.         jbe     @ml
    97.         call    unsel
    98.         dec     bp
    99.         call    sel
    100.         jmp     short @ml
    101. @4:     cmp     al, 50h
    102.         jne     @ml
    103.         cmp     bp, num
    104.         jnb     @ml
    105.         call    unsel
    106.         inc     bp
    107.         call    sel
    108.         jmp     short @ml
    109. @done:  mov     ah, 1
    110.         mov     cx, 1E1Fh
    111.         int     10h
    112.         call    cls
    113.         mov     ah, 2
    114.         xor     bh, bh
    115.         xor     dx, dx
    116.         int     10h
    117.         dec     bp
    118.         shl     bp, 1
    119.         lea     bx, offs
    120.         add     bx, bp
    121.         jmp     word ptr [bx]
    122. o1:     nop
    123.         jmp     short o
    124. o2:     nop
    125.         jmp     short o
    126. o3:     nop
    127.         jmp     short o
    128. o4:     nop
    129. o:      mov     ax, 4C00h
    130.         int     21h
    131. cseg    ends
    132. sseg    segment use16 stack
    133.         db      0400h dup (?)
    134. sseg    ends
    135.         end     @
     
  4. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    JAPH
    Cпасибо.
    А еще бы чтобы "стрелочка"(вверх-вниз) (и снизу-только вверх) чтобы активничала 8-[] :)
     
  5. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    Простите, не понял :dntknw:
    Стрелочки вверх-вниз там и так работают. Что значит активничала?
    Циклический перенос нужен? или что?
    Что значит снизу - только вверх? С 4-го пункта можно переходить только на третий? Дык так оно и есть.
    На примере, пожалуйста, разъясните..
     
  6. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    Ммм...
    А такого не может быть,что я весь исходник не вижу ?
    Видимость кончается тут:
    "Лучшее- враг хорошего" что есть,то и пойдет.
    Можете сделать аттач ?

    p.S.Еще раз спасибо.
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Otebebe
    :) scroll rulez
     
  8. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    censored
    scroll ? ;)
    Так я и говорю где int 16H cтрелку принимает ?
     
  9. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    censored :lol:
    Otebebe
    1. Посмотрите справа от кода - там scroll bar ;)
    2. Где вы нашли int 16h? Надо меньше принимать ;)
    3. Код стрелок: вверх - 00h с последующим 48h, вниз - 00h с последующим 50h. Смотрите возле @ml, @4.

    P.S. А как тут аттачи-то делать? Даёшь кнопку! :)
     
  10. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    JAPH
    8-)
    Ну написал же...где кочается [draw: push ax push cx push dx]то,
    что могу посмотреть (может дело в Opera 6.05 ?)


    Может на slil.ru рука дотянется положить :)

    Cпасибо
     
  11. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
  12. Otebebe

    Otebebe New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    91
    JAPH
    Cпасибо благодетель! :)