Pep9 while循环

问题描述

假定pep9汇编代码在while循环中不断提示用户输入字母,如果它不等于P,G,J或L。但是,我得到了错误输出

         BR      main,i

msg1: .ASCII "\nInvalid character,try again {P,J,G,L}\n"
ch1:  .BLOCK 1 ; First name P,L


main: CALL first,i ; firstname 

    
STOP


; First name 
first:     LDBA charIn,d ;scanf("%c",ch1)
           STBA ch1,d  

loop1:     LDBA  ch1,d
           CPBA  'P',i 
           BREQ  done1

           CPBA  'J',i 
           BREQ  done1
 
           CPBA  'G',i 
           BREQ  done1

           CPBA  'L',i 
           BREQ  done1

           STRO  msg1,d
 
           LDBA  charIn,ch1)
           STBA  ch1,d
           BR    loop1,i 

  
done1:     RET 


          .end 

我得到的输出

Invalid character,L}
g
Invalid character,L}


Invalid character,L}
W
Invalid character,L}

但是,我想要的输出是:

Invalid character,L}
Invalid character,L}

用户输入:

g
W
G

解决方法

您的字符串没有终止,因此它将继续打印超出字符串(期望的结尾)的位置,并且字符串首先经过变量FROM node:lts-alpine WORKDIR /app COPY static static COPY emails emails COPY package.json . ENV NODE_ENV production RUN npm install COPY __sapper__/build __sapper__/build EXPOSE 3000 CMD ["node","__sapper__/build/index.js"] ,以便在换行符之后输出。

要终止字符串,请以ch1(十六进制的nul字符)结尾。

\x00