这个程序完成什么功能啊,程序执行完后BL,DL,AX的内容分别是多少小弟初学汇编望高手指点。。。

这个程序完成什么功能啊,程序执行完后BL,DL,AX的内容分别是多少小弟初学汇编望高手指点。。。,第1张

bl和dl分别是AX中位为0和1的数量(和为16),AX最后为0

SHL AX,1左移AX1位并把高位放CF,后用0补,循环16次就是0了

JC则dl加1否则bl加1,循环16次

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

cl,04;cl值为4

shl

dx,cl;逻辑左移4位

mov

bl,ah;ah中值送到bl中

shl

ax,cl;左移4位

shr

bl,cl;右移4位

or

dl,bl;二者异或 *** 作

结果是把

DX:AX

的32位值

左移

4位

以上就是关于这个程序完成什么功能啊,程序执行完后BL,DL,AX的内容分别是多少小弟初学汇编望高手指点。。。全部的内容,包括:这个程序完成什么功能啊,程序执行完后BL,DL,AX的内容分别是多少小弟初学汇编望高手指点。。。、汇编语言题目,求详解、下面一段程序完成什么 *** 作 MOV CL,04 SHR DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9866704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存