
汇编语言题目,求详解
MOVDI,OFFSETBUFFMOVCX,000AHMOVBL,0GOON:MOVAL,[DI]ANDAL,ALJNZNEXTINCBLNEXT:INCDILOOPGO...
MOV DI,OFFSET BUFF MOV CX,000AH MOV BL,0GOON:MOV AL,[DI] AND AL,AL JNZ NEXT INC BLNEXT:INC DI LOOP GOON HLT BUFF DB 23H,54H,00H,83H,98H,36H,00H,49H,00H,73H求程序的详细解释。求BL程序中AND AL,AL好像没什么用喔,他的结果还是AL本身另HLT起什么作用
展开
1个回答
推荐于2018-04-04
展开全部
MOV DI,OFFSET BUFF 取数组BUFF的首地址到DI寄存器中
MOV CX,000AH 设定循环次数
MOV BL,0 做计数器用,用来记录数组BUFF中为0的字节的个数,赋初值为0
GOON:MOV AL,byte ptr [DI] 将数组的BUFF的一个字节的数据放进AL寄存器中
AND AL,AL AL中的数据与AL中的数据做与运算,用来作为下一条跳转指令的跳转条件
JNZ NEXT 上一条指令运算不为0就跳转到标号NEXT处
INC BL 若 and al,al 这条指令的运算结果为0,bl寄存器就加1
NEXT:INC DI dl加1,dl最开始是数组BUFF的首地址,加1相当于指向下一个字节
LOOP GOON CX先减1,判断CX是否为0,若为0就跳出循环,不为0就循环,循环从标号GOON处开始
HLT 停机
BUFF DB 23H,54H,00H,83H,98H,36H,00H,49H,00H,73H
这段汇编代码的作用是判断单元大小为一字节的数组BUFF中有多少个字节为0,并将结果保存在BL寄存器中
MOV CX,000AH 设定循环次数
MOV BL,0 做计数器用,用来记录数组BUFF中为0的字节的个数,赋初值为0
GOON:MOV AL,byte ptr [DI] 将数组的BUFF的一个字节的数据放进AL寄存器中
AND AL,AL AL中的数据与AL中的数据做与运算,用来作为下一条跳转指令的跳转条件
JNZ NEXT 上一条指令运算不为0就跳转到标号NEXT处
INC BL 若 and al,al 这条指令的运算结果为0,bl寄存器就加1
NEXT:INC DI dl加1,dl最开始是数组BUFF的首地址,加1相当于指向下一个字节
LOOP GOON CX先减1,判断CX是否为0,若为0就跳出循环,不为0就循环,循环从标号GOON处开始
HLT 停机
BUFF DB 23H,54H,00H,83H,98H,36H,00H,49H,00H,73H
这段汇编代码的作用是判断单元大小为一字节的数组BUFF中有多少个字节为0,并将结果保存在BL寄存器中
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询