内容发布更新时间 : 2024/11/5 16:09:43星期一 下面是文章的全部内容请认真阅读。
微机原理软件实验报告 实验二分支、循环程序设计 一.实验目的
1.开始独立进行汇编语言程序设计。 2.掌握基本分支,循环程序设计。 3.掌握最简单的DOS 功能调用。 二.实验内容
1.安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过9。 2.编写一个程序统计数据区中正数,负数和零的个数。 3.将统计结果在屏幕上显示。 三.流程图
四.源代码 DATA SEGMENT Z DW 0 ;数据中0的个数 A DW 0 ;数据中大于0的个数 B DW 0 ;数据中小于0的个数
NUM DW 9,8,0,-7,6,-5,-4,3,2,-1,0,-8,-1,9,0,0,1 ;设定的一组数据,其中4个0,7个正数,6个负数,符合题目要求
N DW ($-NUM/2 ;该组数据的个数 TYPE0 DB 0DH, 0AH, 'Number of zeros : $' TYPE1 DB 0DH, 0AH, 'Number of greater than 0 : $'
TYPE2 DB 0DH, 0AH, 'Number of less than 0 : $' LOCATE DW TYPE0, TYPE1, TYPE2 DATA ENDS
STACK SEGMENT STACK DW 128 DUP(? STACK ENDS CODE SEGMENT
ASSUME DS:DATA, SS:STACK, C S:CODE START: MOV AX, DATA MOV DS, AX MOV AX, STACK
MOV SS, AX ;初始化DS、SS指向STA
MOV BX, OFFSET NUM ;将NUM中第一个数字的地址送入BX MOV CX, N ;将N中数字个数送入CX
LOOP1: MOV AX, [BX] ;取出NUM中的第一个数字 CMP A X, 0 ;与零相比
JZ IFZ ;判断结果为是0,跳转到IFZ处继续执行 SAL AX, 1
JC IFL ;判断结果是小于0,跳转到IFL
INC WORD PTR A ;否则,A自加,然后继续执行程序 JMP CONTINUE
IFL: INC WORD PTR B ;B计数加1 JMP CONTINUE IFZ: INC Z ;Z计数加1 CONTINUE:
ADD BX, 2 ;指针+2,继续送入下一数字 LOOP LOOP1 ;循环CX次判断 MOV CX, 3 ;共显示3个字符串 XOR BX, BX DISP:
MOV DX, LOCATE[BX]
MOV AH, 09H ;DOS 09号功能调用,显示字符串 INT 21H MOV DX, Z[BX]
ADD DX, '0' ;转换为ASCII码
MOV AH, 02H ;DOS 02号功能调用,显示字符 INT 21H
ADD BX, 2 ;指针+2(DW
LOOP DISP MOV AX, 4C00H INT 21H ;返回DOS系统 CODE ENDS END START 五.运行结果
六.预习题
1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?