网站设计与应用方向论文,网站域名.xin,亚马逊网站建设性提议,网站的ftp在哪里可以查到已知有几个数据存放在BUF为首址的字节存储区中#xff0c;试统计其中正数的个数#xff0c;并将结果存入ZNUM单元中。
P160 例4.17
汇编思路#xff1a;DATA段#xff0c;定义BUF存储区#xff0c;定义一下DB类型的数据#xff0c;N为定义数据的总个数#xff0c;ZNUM…已知有几个数据存放在BUF为首址的字节存储区中试统计其中正数的个数并将结果存入ZNUM单元中。
P160 例4.17
汇编思路DATA段定义BUF存储区定义一下DB类型的数据N为定义数据的总个数ZNUM用于存放最后的正数个数。STACK段开辟一段大小为100DB的堆栈段的存储空间用于进行运算。CODE段首先让BX获取到BUF的有效地址CX获取到N的值用于循环对AX清零目的用于记录正数个数然后将BX的内容以次与0相比较若结果为0通过JLE判断AX自加否则BX自加如果通过LOOP跳回到上一步再次进行下一个数据的判断直到最后CX的值为0结束然后再将AX统计到的正数的个数赋值给ZNUM然后调用4CH号功能返回DOS系统程序结束。
代码如下
DATA SEGMENT
BUF DB 3,5,2,7,0,-1,-7,9,-4,8;随机的几个存放在BUF为首址的一些数据
N EQU $-BUF ;N表示数据的总个数
ZNUM DW ? ;ZNUM用于存放最后的统计个数
DATA ENDS
STACK SEGMENT STACKDB 100 DUP(?);在堆栈段开辟了一段100DB大小的用于运算的存储空间
STACK ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATAMOV DS,AX LEA BX,BUF ;去有效地址指令LEA将BUF的地址赋值给BXMOV CX,N ;CX存放数据的总个数用于循环使用XOR AX,AX ;AX清零用于存放正数的个数
L1: CMP BYTE PTR[BX],0;存储器操作数需要使用修改属性运算符PTR来指定位于其后的存储器操作数的类型为BYTE类型判断数据是否为0JLE L2 ;JLE小于或等于转移即若上条指令结果0,跳转到L2标签处否则执行下一条指令 即0执行下一条指令0跳转到L2标签处INC AX ;若执行到此条指令表示数据为正数AX自加
L2: INC BX ;BX1即操作进行判断下一个数据LOOP L1 ;无条件跳转到L1标签处CX-1再次跳转到L1标签处时由于BX已经1此时再判断的就是下一个数据了直到CX的值为0即所有数据已经都判断完毕之后结束循环MOV ZNUM,AX ;将AX用于存放整数的个数赋值给ZNUMMOV AH,4CH ;调用4CH号功能返回DOS操作系统INT 21H ;终止当前程序的运行并返回DOS系统
CODE ENDSEND START