问题描述
假定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