以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 19:29:14
以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI-1] XOR AH,AH
CMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思
CMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思
epz cmpsb
如果ds:si和es:di所指向的两个字节相等,则继续比较.
所以如果相等的话,就停止循环.但是这时候si和di已经自动加1了,如果要找不相等的那两个数,就要把si和di减1.
所以MOV AL,[SI-1]和MOV BL,ES:[DI-1]所要执行的,就是把那两个不相等的字节放到al和bl中去.
不过这两条指令有错误.
首先最明显的是两个操作数之间,忘记了逗号.
另外,si-1和di-1都是错误的表达式.汇编语言中,表达式是在汇编时就已经处理好了的.所以正确表达式的书写原则就是,在汇编的时候,表达式的值应当能够准确的计算出来.而汇编时si和di的值并不确定,所以这里错了.
应该用dec指令先把si和di减一,再用mov指令取值.
dec si
MOV AL,[SI]
dec di
MOV BL ES:[DI]
XOR AH,AH ;ah清零
如果ds:si和es:di所指向的两个字节相等,则继续比较.
所以如果相等的话,就停止循环.但是这时候si和di已经自动加1了,如果要找不相等的那两个数,就要把si和di减1.
所以MOV AL,[SI-1]和MOV BL,ES:[DI-1]所要执行的,就是把那两个不相等的字节放到al和bl中去.
不过这两条指令有错误.
首先最明显的是两个操作数之间,忘记了逗号.
另外,si-1和di-1都是错误的表达式.汇编语言中,表达式是在汇编时就已经处理好了的.所以正确表达式的书写原则就是,在汇编的时候,表达式的值应当能够准确的计算出来.而汇编时si和di的值并不确定,所以这里错了.
应该用dec指令先把si和di减一,再用mov指令取值.
dec si
MOV AL,[SI]
dec di
MOV BL ES:[DI]
XOR AH,AH ;ah清零
s:mov al,ds:[si] mov es:[di],al inc si add di,1 loop s
LEA DI,DIMEN MOV AL,[DI] MOV BL,[DI+1] CBW IDIV BL MOV [DI],
指出下列程序错误原因 MOV AL,BX MOV [1200],[SI] MOV DS,ES MOV DS,1000H
分析下面程序段:MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD
MOV DI,ES:[SI+3] ,这个物理地址是如何计算的?DI 是多少
汇编语言 MOV ES:[SI],AX 和 LEA DI,ES:DEST
汇编语言 al=13h mov buf[di],al mov ax.dw1[bx][si] mov
段超越前缀 ,MOV DI,ES:[SI+3] ,这个物理地址是如何计算的?
mov es:[di],byte ptr ds:[si],为什么错了?
2、下面的程序用来比较两个字符串a和b的大小,如果字符串a大于字符串b,则输出“a>b”,否则输出“ab)
两个字符串比较大小的程序C语言
2、请设计一个程序,程序包括下列功能:(1) 让用户依次输入两个字符串s1和s2; (2) 比较两个字符串的长度