您的位置:首页 > 其它

【8086】中国电力出版社 微机原理实验与课程设计指导书 实验二 数据处理实验程序设计 答案

2014-05-18 01:58 309 查看
在标题所述书的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则循环回去继续扫描BUF数组

        MOV AX,0FFH  ;8个数字全部找完,没找到一个,把FF送入AX,然后结束

FINISH: MOV AX,4CH

        INT 21H

CODE ENDS

END START

 

程序调试结果:我用的是emu8086编译器,大家也可以选择韦福还有proteus进行仿真实验。wave6000一直都有点问题无法编译,我会在近期解决这个问题并把解决方案发布到blog上。

 



                                                                                                                     图一 变量表



                                                                                                                          图二 AL寄存器为127,找到目标数



                                                                                                                         图3     AL寄存器为97,与A变量存储的数据不匹配

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息