以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI-1] XOR AH,AHCMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/16 03:27:38

以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI-1] XOR AH,AHCMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思
以下是两个字符串比较程序片段 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]是什么意思

以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI-1] XOR AH,AHCMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思
repz 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清零

以下是两个字符串比较程序片段 REPZ CMPSB如果相等就比较 M0V AL [SI-1] MOV BL ES:[DI-1] XOR AH,AHCMPSB执行时SI,DI自动加1,请问下面MOV AL [SI-1]和MOV BL ES:[DI-1]是什么意思 有以下函数该函数的功能是int fun(char *s){char *t=s;while(*t++);return(t-s); }A)比较两个字符的大小 B)计算s所指字符串占用内存字节的个数C)计算s所指字符串的长度 D)将s所指字符串复制到字符串t中具 c语言的问题编一个程序,将两个字符串s1,s2比较,如果s1>s2,输出一个正数;s1 求救C语言问题!编写一个程序:比较两个字符串是否相同,如果相同,则返回值是0,否则,返回前两个非相配的字符的差值(用printf直接输出两个对应差值也行). 2、下面的程序用来比较两个字符串a和b的大小,如果字符串a大于字符串b,则输出“a>b”,否则输出“ab)printf(a>b);elseprintf(a 2、请设计一个程序,程序包括下列功能:(1) 让用户依次输入两个字符串s1和s2; (2) 比较两个字符串的长度(2) 比较两个字符串的长度并显示比较结果;(3) 判断s1与s2有没有长度在 3个字符以上 如果,s1和s2是两个字符串,可以用库函数strcpy(s1,s2)比较这两个字符串的大小?可以吗? 下列函数的功能是?A求字符串的长度 B比较两个字符串的大小 C将字符串X复制到字符串Y D将字符串X连接到字符串Y后面int fun 1 (chat* x){ char*y=x;while(*y++);return(y-x-1);} 21、下面函数的功能是( ).*21、下面函数的功能是( ).sss(s,t)char *s,*t;{while((*s)&&(*t)&&(*t++==*s++));return(*s-*t);}A 求字符串的长度B 比较两个字符串的大小C 将字符串s复制到字符串t中D 将字符串s matlab程序设计:请设计一个程序,程序包括下列功能:(1) 让用户依次输入两个字符串s1和s2;(2) 比较两个字符串的长度并显示比较结果;(3) 判断s1与s2有没有长度在 3个字符以上的相同子串,显 C语言试题 请说明具体原因1 一下关于字符串的叙述正确的是A C语言中有字符串类型的常量和变量B 两个字符串中的字符个数相同时才能进行字符串大校的比较C 可以用关系运算符对字符串的 两个字符串比较大小的程序C语言两个字符串s1和s2,若s1=s2时,返回值为0;若s1不等于s2时,返回它们二者第一个不同字符的ASCII码差值(如BOY与BAD,第二个字母不同,O与A之差为79-65=14).如果s1 1.下列函数的功能是() .int f(char *a,char *b){while (*a++ = = *b++) ;if(*(a-2)) return *(--a)-*(--b); else return0; }A)字符串复制 B)字符串连接C)字符串比较 D)都不是2.有以下定义和语句()struct student{ ch C语言:编写一程序实现比较任意个字符串的大小.实现比较排序时定义函数完成,函数参数可选指针数组.最好是带说明的 C++书上讲,两个字符串比较是地址的比较.下面结果理应为:not equal,但是现在输出equal,#include void main(){if(join==join)//两个字符串的比较是地址的比较.运行结果理应为:not equal,so tell me y cout 根据书上讲,两个字符串的比较是地址的比较.下面运行结果理应为:not equal,但是现在输出equal,#include void main(){if(join==join)//两个字符串的比较是地址的比较.运行结果理应为:not equal,so tell 关于一道C语言的题目14.以下程序的功能是:统计一个字符串中数字字符0到9各自出现的次数,统计结果保存在数组 count中.例如,如果字符串为lenterschar4543123564879ffgh,则统计结果为:1:2 2:1 3:2 求问大神括号里填什么、以下程序的功能是输入一个字符串,输出其中所出现过的大写英文字母.如运行时输入字符串FONTNAME and FILENAME,则输出F O N T A M E I L.请填空.int main(void){char x[80],y[26]; in