программа вdebug

Тема в разделе "WASM.BEGINNERS", создана пользователем lavan, 14 июл 2009.

  1. lavan

    lavan New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2009
    Сообщения:
    2
    доброго времени суток,может не совсем по теме но нужной темы не нашел.
    надо написать прогу в debug в зависимости от значения регистра bx,если пользователь ввел еденицу то вывести "москва" если 2 то вывести "питер"

    C:\Documents and Settings\debug
    -a
    13A5:0100 mov ah,01
    13A5:0102 int 21
    13A5:0104 mov bh,al
    13A5:0106 cmp bh,1
    13A5:0109 jz 111 ;здесь не происходит переход а выпо-
    13A5:010B mov ah,09 ;лняется вывод питер
    13A5:010D mov dx,122
    13A5:0110 int 21
    13A5:0112 ret
    13A5:0113 db "piter$"
    13A5:0119
    -a10d
    13A5:010D mov dx,113
    13A5:0110
    -a109
    13A5:0109 jz 119 ;изменене адреса перехода
    13A5:010B
    -a119
    13A5:0119 mov ah,09
    13A5:011B mov dx,112
    13A5:011E int 21
    13A5:0120 ret
    13A5:0121 db "moskva$"
    13A5:0128
    -a11b
    13A5:011B mov dx,121
    13A5:011E
    -g
    1piter ;ввожу 1 и выводится питер,а ждал москву
    Program terminated normally
    -
    короче не происходит переход:dntknw:( хотя ввожу еденицу подскажите где ошибка????
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Дык вначале надо написать на бумажке, и подумать!

    Ошибка, естественно, в том, что при нажатии "1" возвращается не байт 01, а байт 31h - ascii-код цифры 1. Ну и вообще причесать не мешает.

    Код (Text):
    1. mov ah, 1
    2. int 21h
    3. mov dx, offset Msk
    4. cmp al, "1"    ;если нажато 1, то выводим Moscow, все остальные варианты - Piter
    5. jz @print
    6. mov dx, offset Spb
    7. @print:
    8. mov ah, 9
    9. int 21h
    10. ret
    11. Msk db "Moscow$"
    12. Spb db "Piter$"
    Ну а там дебуг, или тасм, или масм, или как хочешь
    Код (Text):
    1. -a100
    2. 13DD:0100 mov ah,1
    3. 13DD:0102 int 21
    4. 13DD:0104 mov dx,200
    5. 13DD:0107 cmp al,31
    6. 13DD:0109 jz 120
    7. 13DD:010B mov dx,300
    8. 13DD:010E mov ah,9
    9. 13DD:0110 int 21
    10. 13DD:0112 ret
    11. 13DD:0113 db "Moscow$"
    12. 13DD:011A db "Piter$"
    13. 13DD:0120
    14. -a104
    15. 13DD:0104 mov dx,113
    16. 13DD:0107
    17. -a109
    18. 13DD:0109 jz 10e
    19. 13DD:010B
    20. -a10b
    21. 13DD:010B mov dx,11a
    22. 13DD:010E
    23. -g
    24. 1Moscow
    25. Программа завершилась нормально
     
  3. lavan

    lavan New Member

    Публикаций:
    0
    Регистрация:
    14 июл 2009
    Сообщения:
    2
    блин,протупил,спасибо за ответ