
 
LC-3汇编语言
 
        .orig x3000
LOOP1   AND R1,R1,#0ADD R1,R1,#3LEA R0, string1PUTS                ;打印string1AND R0,R0,#0ADD R0, R0, #10     OUT                 ;打印换行符GETCOUT;检查输入的字符是否为'W'(ASCII码为87)ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-7BRnp LOC4AND R0,R0,#0ADD R0, R0, #10     OUT                 ;打印换行符
LOOP2   LEA R0, string2     PUTS                ;打印string2AND R0,R0,#0ADD R0,R0,#10OUT                 ;打印换行符LD R2, BUFFER
INPUT   GETC                ;用键盘输入一个字符OUT                 ;在控制台上显示输入的字符STR R0, R2, #0      ;存储字符到缓冲区;如果输入的字符是'Y(ASCII码为89),则结束输入循环ADD R3, R0, #-16ADD R3, R3, #-16ADD R3, R3, #-16ADD R3, R3, #-16ADD R3, R3, #-16ADD R3, R3, #-9BRz LOOP3           ADD R2, R2, #1      ;移动到下一个缓冲区位置BR INPUT            ;继续输入下一个字符LOOP3   LD R2,BUFFER        ;把x4000存到R2,从x4000开始放输入的字符串LEA R3,string3      ;把string3的地址存到R3
LOC0    LDR R4,R2,#0        ;R4存BUFFER的当前字符LDR R5,R3,#0        ;R5存string3的当前字符ADD R6,R4,#0        ;把BUFFER的当前字符放R6ADD R6,R6,#-16      ;判断BUFFER当前字符是否为'Y',如果是,说明已遍历完输入的字符串ADD R6,R6,#-16ADD R6,R6,#-16ADD R6,R6,#-16ADD R6,R6,#-16ADD R6,R6,#-9BRnp LOC1       ADD R5,R5,#0        ;判断string3当前字符是否为NULL,如果是,说明比较完成BRz LOC2      
LOC1    NOT R6,R4           ;R4取反加1放到R6ADD R6,R6,#1    ADD R7,R5,R6        ;R7=R5-R4BRnp LOC3           ;如果不是0,说明有不同的字符,密码错误ADD R2,R2,#1        ;移动到BUFFER下一个字符ADD R3,R3,#1        ;移动到string3下一个字符BR  LOC0        LOC2    AND R0,R0,#0ADD R0, R0, #10OUT                 ;打印换行符LEA R0, string4PUTS                ;输出"Success!"BR LOC4LOC3    AND R0,R0,#0ADD R0,R0,#10OUTADD R1,R1,#-1BRz LOOP4           ;如果R1为0,说明机会用完了LEA R0, string5PUTS                ;输出string5;把R1里数字的ASCII码输出到控制台ADD R0,R1,#15ADD R0,R0,#1ADD R0,R0,#15ADD R0,R0,#1ADD R0,R0,#15ADD R0,R0,#1OUT;输出' ',ASCII码为32AND R0,R0,#0ADD R0, R0, #15ADD R0,R0,#1ADD R0, R0, #15ADD R0,R0,#1OUTLEA R0, string6PUTS                ;输出string6AND R0,R0,#0ADD R0, R0, #10OUT                 ;输出换行符BR LOOP2LOOP4   LEA R0, string7     PUTS                ;输出string7AND R0,R0,#0ADD R0, R0, #10OUT                 ;输出换行符BR LOOP1
LOC4    HALTstring1 .STRINGZ "Welcome to the bank system! Type 'W' to withdraw some fund."
string2 .STRINGZ "Please input your password:"
string3 .STRINGZ "PB22061161"
string4 .STRINGZ "Success!"
string5 .STRINGZ "Incorrect password!"
string6 .STRINGZ "attempt(s) remain."
string7 .STRINGZ "Fails."BUFFER .FILL x4000.end