在标题所述书的P5页所示。
题目如下:
设在内存缓冲区BUF+1单元开始,存放若干个单字节数,其数据长度在BUF单元,要求在这些数据中查找某个特定数据,若有把存放该字符的地址送入AX,否则把FF送入AX。完成相应的程序的编制,并进行调试验证结果。
源程序代码如下:
DATA SEGMENT;数据段
BUF DB 8,22,33,12,-1,-50,-32,97,127;8是8个数字,后面的是几个数字
A DB 127;a是那个要找的那个数字
DATA ENDS
CODE SEGMENT;代码段
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA ;把DATA段给AX
MOV DS,AX ;把AX给DS段,初始化DS完成
MOV CL,BUF ;将BUF中存的数字的个数给CL
MOV BX,OFFSET BUF+1 ;把BUF+1的偏移地址给BX
A1: MOV AL,[BX] ;把下一个数给AL
CMP A,AL ;将现在轮到的BUF内的数据,与A中所存的咱们要找的数据比较一下
JZ FIND ;判断相等,则ZF为1找到目标数,跳进FIND区
JMP COUNT ;没找到额,进入循环计数程序,进入下一个数字
FIND: MOV AX,BX ;把BX中存放的字符的地址给AX
JMP FINISH ;找到目标数,程序结束
COUNT: INC BX ;循环程序处,将BX指向下一位数据
LOOP A1 ;CX计数寄存器不为0则循