Программа, которая спрашивает, хотите ли вы пива - PullRequest
0 голосов
/ 06 марта 2011

Я написал программу, которая спрашивает, хотите ли вы пива (только больше или равно 18 лет).Мой ассемблер сообщает о некоторых проблемах.Я новичок в сборке 8086.

    .MODEL SMALL
    .STACK 100h
    .DATA

  Welcome DB 'Hello man, How old are you?',13,10,'$'                                    
  beer DB 'Did you want to drink a beer?(y/n)',13,10,'$'
  old DB 'You cant drink becuste are you young',13,10,'$'   
  yes DB 'Ok thanks, pay 5$ in cash',13,10,'$' 
  no DB 'Ok, so **** you off!',13,10,'$'


    .CODE

    Welcom:  

        MOV AX, @DATA              
        MOV DS, AX                 
        MOV AH, 9                   
        MOV DX, OFFSET Welcome     
        INT 21h                    

        MOV AL, 1
        INT 21h       

        CMP AL, 18
        JB older 
        CMP, AL, 18 
        JAE drink

        MOV AX, 1 
        INT 21h  
        CMP AL, 'y'
        JE ye
        CMP AL, 'n'
        JE n

      older:


            MOV DX, OFFSET old 


      drink:  


            MOV DX, OFFSET beer



      ye:  


            MOV DX, OFFSET yes


      n:

            MOV DX, OFFSET no

     xx:

         MOV AX, 4ch 
         INT 21h     
         END Welcome

Спасибо

1 Ответ

1 голос
/ 06 марта 2011

Вам не нужна запятая после CMP в CMP, AL, 18. И в любом случае вам не нужен второй CMP, поскольку условный переход не влияет на флаги предыдущего CMP.

Возможно, вам не следует использовать другой условный переход, но вы узнаете об этом позже.

<ч /> Что касается вашего второго вопроса, вы помещаете «END Welcome» вместо «END Welcom», который, как я предполагаю, задает запуск программы в разделе DATA в начале строки «Hello». «Е» - это код символа 65 (шестнадцатеричный код). В общем, не очень хорошая идея использовать ярлыки, которые очень похожи. Возможно, сделайте метку строки данных «приветствие» и оставьте «Добро пожаловать» для кода, в этом случае вы можете оставить свой оператор END как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...