доброго времени суток,может не совсем по теме но нужной темы не нашел. надо написать прогу в 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 - короче не происходит переход( хотя ввожу еденицу подскажите где ошибка????
Дык вначале надо написать на бумажке, и подумать! Ошибка, естественно, в том, что при нажатии "1" возвращается не байт 01, а байт 31h - ascii-код цифры 1. Ну и вообще причесать не мешает. Код (Text): mov ah, 1 int 21h mov dx, offset Msk cmp al, "1" ;если нажато 1, то выводим Moscow, все остальные варианты - Piter jz @print mov dx, offset Spb @print: mov ah, 9 int 21h ret Msk db "Moscow$" Spb db "Piter$" Ну а там дебуг, или тасм, или масм, или как хочешь Код (Text): -a100 13DD:0100 mov ah,1 13DD:0102 int 21 13DD:0104 mov dx,200 13DD:0107 cmp al,31 13DD:0109 jz 120 13DD:010B mov dx,300 13DD:010E mov ah,9 13DD:0110 int 21 13DD:0112 ret 13DD:0113 db "Moscow$" 13DD:011A db "Piter$" 13DD:0120 -a104 13DD:0104 mov dx,113 13DD:0107 -a109 13DD:0109 jz 10e 13DD:010B -a10b 13DD:010B mov dx,11a 13DD:010E -g 1Moscow Программа завершилась нормально