![](https://img-blog.csdnimg.cn/direct/4a5c31085b4f47d19660a847a15d8459.png)
![](https://img-blog.csdnimg.cn/direct/7210d3a9a7754471b43eddea1c3cd352.png)
![](https://img-blog.csdnimg.cn/direct/f6044189b12447ada81ab7a2c8d97baf.png)
![](https://img-blog.csdnimg.cn/direct/5896a2d964d246b79a60086236323c42.png)
![](https://img-blog.csdnimg.cn/direct/92cdd9f7f5544845842f958e4c8d1724.png)
LC-3汇编语言
.ORIG x3000
AND R2,R2,#0 ;把R2初始化为0
LD R6,S1_ADDR ;把S1的地址存到R6
LD R7,S2_ADDR ;把S2的地址存到R7
LOC0 LDR R0,R6,#0 ;R0存S1的当前字符
LDR R1,R7,#0 ;R1存S2的当前字符
ADD R0,R0,#0 ;判断S1当前字符是否为NULL
BRnp LOC1
ADD R1,R1,#0 ;判断S2当前字符是否为NULL,如果也是,则说明比较完成
BRz LOC3
LOC1 NOT R3,R1 ;R1取反加1放到R3
ADD R3,R3,#1
ADD R4,R3,R0 ;R4=R0-R1
BRnp LOC2
ADD R6,R6,#1 ;移动到下一个地址
ADD R7,R7,#1 ;移动到下一个地址
BR LOC0
LOC2 ADD R2,R4,#0 ;R2=R4
LOC3 STI R2, RESULT ;把R2存到X3300
HALT
S1_ADDR .FILL x3100
S2_ADDR .FILL x3200
RESULT .FILL x3300
.END
.ORIG x3100
S1 .STRINGZ "SecondString"
.END
.ORIG x3200
S2 .STRINGZ "Second"
.END
C++
int16_t lab3(char s1[], char s2[]) {
int16_t i=0;
for (i = 0; s1[i]==s2[i]&&s1[i]; ++i);
return s1[i]-s2[i];
}