微机原理实验报告西安交通大学(3)

2019-05-24 09:27

JMP RB

RA: MOV AL,'N' ;不相等则将Y送AL RB:RET ;比较结束返回程序 L1 ENDP CODE ENDS END START

运行:当字符串为STRX DB 'CZX0','$' STRY DB 'CZX1','$'

当字符串为STRX DB 'CZX0','$' STRY DB 'CZX0','$'

4、实验中遇到的问题:

在刚开始接触实验时感觉非常困难,无从下手,后来经过仔细认真阅读书上的经典程序之后,基本能够写出关键程序片段,再借助辅导书完善了实验程序内容,基本顺利地完成了实验。

本次实验让我熟悉了汇编语言的实现步骤和常用的指令系统,同时也学会了利用DEBUG调试汇编程序。

实验二 汇编语言程序设计

1、实验目的

a) 练习编写较复杂汇编语言程序时程序框图的绘制。 b) 子程序定义与调用,参数传递的方法。

c) 了解宏指令的定义与调用,并与子程序定义与调用进行比较。 d) 掌握利用软件中断实现DOS系统调用的方法。 2、具体实验

第一题:

教材4章,第8题,设n=10。即试编制程序,找出前十个质数。 提示:编写一个判断某数是否质数的子程序,主程序调用该子程序,对顺序递增的自然数进行是否质数的判断,若是则存放在质数缓冲区中,直到找到10个质数,程序结束。

判断一个数N是否是质数的一种算法是:将N顺序与2~N-1的数相除,若每次除法的余数均不等于0,则该数是质数。

注意:8086的除法支持双字除以字,字除以字节,本题中可以选择字除以字节。

正确结果为:02,03,05,07,0B,0D,11,13,17,1D(十六进制数)

a) 实验原理

找出前十个质数,质数只能被1和其自身整除,但考虑到如果从2开始一个一个的除的算法效率太低,很多已经是合数的作为除数是浪费的,故该算法用每一个数除以已经判断出来的质数(均小于该数),如果不能整除则说明该数是质数,能整除说明该数不是质数,继续进行下一个判断。

b) 程序框图

c) 程序源代码 N EQU 10

STRDISP MACRO POS MOV DX,OFFSET POS MOV AH,9H INT 21H ENDM

NUMTOSTR MACRO NUM,POS MOV AX,NUM MOV SI,OFFSET POS ADD SI,LENGTH POS-2;从最后开始(不考虑字符串结束符\存放5个字符

CALL WORDTOSTR; ENDM

DATAS SEGMENT

NUMBER DW N DUP(0) LAST DW ?

NUMNOW DW ?

STR1 DB \,0DH,0AH,\ STR3 DB \,\ STRNO DB 6 DUP(\),\

STRPRIME DB 6 DUP(\),\ HCHH DB 0DH,0AH,\DATAS ENDS

STACKS SEGMENT STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:DATAS START:

MOV AX,DATAS MOV DS,AX MOV ES,AX

MOV AX,STACKS MOV SS,AX

MOV SI,OFFSET NUMBER;质数数组首地址 MOV BX,0

MOV NUMBER[SI+BX],2;第一个质数为2 MOV LAST,0;最后一个质数地址 MOV DX,2;第一个质数是2 MOV NUMNOW,1;质数计数 LOOP1:

INC DX;往后查找 MOV BX,2; MOV CX,0 LOOP2:

;判定DX中数据是否是质数

PUSH DX;保存现场,防止除法运算带来的改变 MOV AX,DX MOV DX,0

ADD SI,CX;求出作为除数的质数的相对位移

MOV BX,NUMBER[SI];从质数集里读取质数 ADC SI,CX;还原SI INC CX

INC CX;cx自加2

DIV BX;DX<-(DX:AX)/(BX)余数 CMP DX,0 POP DX

JZ LOOP1;除尽则表示该数不是质数,继续查找下一个 CMP BX,DX

JB LOOP2;如果除数小于被除数,则增大除数继续做除法 ADD LAST,2;相当于指针往后移动一个字的单位长度 MOV BX,LAST

MOV NUMBER[SI+BX],DX;将找到的质数存入数组,基址变址寻址 ADD NUMNOW,1;质数计数加1

CMP NUMNOW,N;得到N个质数则结束 JNZ LOOP1;否则继续查找

;输出结果

MOV NUMNOW,1

MOV DI,OFFSET NUMBER STRDISP STR1 DISPLAY:

NUMTOSTR NUMNOW,STRNO MOV AX,DS:[DI]

NUMTOSTR AX,STRPRIME STRDISP STRPRIME;输出质数 STRDISP HCHH INC DI INC DI

ADD NUMNOW,1 CMP NUMNOW,N JBE DISPLAY

;等待键盘输入,使程序不会立即退出 STRDISP STR3 MOV AH,08H INT 21H

MOV AH,4CH INT 21H ;子程序

;WORDTOSTR

;将AX中数字转换成5个字符的字符串,存入SI为首地址的存储单元里


微机原理实验报告西安交通大学(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:艾美生物科技电子商务策划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: