[it计算机]微机原理实验指导书东华_带源程序与流程图内容摘要:

SUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,OFFSET Z SECOND:MOV AX,OFFSET M MOV DX,OFFSET N ADD AX,15 CMP AX,BX JC FIRST MOV CX,0016 ADD DX,15 MOV SI,AX MOV DI,DX BEGIN2:MOV BL,[SI] MOV [DI],BL DEC SI DEC DI LOOP BEGIN2 JMP COMPLETE FIRST:MOV CX,0016 SUB AX,15 MOV SI,AX MOV DI,BX BEGIN1:MOV DL,[SI] MOV [DI],DL INC SI INC DI LOOP BEGIN1 MOV BX,0000 JMP SECOND COMPLETE:MOV AH,4CH INT 21H CODE ENDS END START 无序数据块的递增排序 1)程序设计思想和要求 16 在首址为 3000H 的数据区中存放着一组无符号数, 数据的长度存于 3500H 单元内,要求用冒泡法对该区中的数据按递增次序排列。 冒泡法的基本思想是从最后一个数(或从第一个数)开始,依次把相邻两个数比较,即第N个数与第N-1个数比较„,若大则交换,否则不交换,直到N个数都比较完为止。 此时 ,其中最小数排在最前列。 然后将剩下的N 1 个数再按前述方法进行,找到 N1 个数中最小的数。 以后重复进行,直到全部按序排列。 2)实验步骤 (1)编写程序。 (2)在 DEBUG 下键入程序并检查(程序可存放于 2020H- 8000H 单元,只要不与数据区重叠即可)。 (3)确定数据个数并输入 3500H 单元中,在首址为 3500H 的数据区中存入任意无符号数。 (4)运行程序并检查运行结果。 (6)反复修改数据个数和数据区中的数,运行程序、观察结果,验证程序的正确性。 DATA SEGMENT M DB 4,7,0,2,12,55,98,35,1,78,6,22,55,98,11,32,43,54,26,100,125,142,77,44,33,22,10 CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA AX,M MOV SI,AX MOV AH,0 NEXT: MOV CX,0026 MOV BX,0026 AGAIN:MOV AL,[SI+BX] DEC BX MOV DL,[SI+BX] CMP AL,DL JNC CONTINUE XCHG DL,1[SI+BX] XCHG AL,[SI+BX] CONTINUE:LOOP AGAIN MOV BH,25 ADD AH,1 CMP AH,BH JC NEXT MOV AH,4CH INT 21H CODE ENDS END START 17 求数的平方根 1)程序设计思想和要求 减奇数法是一种求取近似平方根和平方根的整数部分的方法。 有公式: n ( 2K1) =N2 k =1 若要求数 S 的平方根 S, 则可以从 S 中减去奇数 5„直到减为零或不够减下一个奇数为止,然后统计减去的奇数个数,它就是 S 的近似平方根。 被开方数为一个足够大的二进制数, 存于首址为 4000H 的单元内,它的方根存放在以 4500H为首的单元内。 2)实验步骤 (1)编写程序。 (2)在 DEBUG 下输入程序并检查(程序可存放于 2020H- 8000H 单元,和数据存放单元不 要重叠)。 (3)在 4000H 为首的单元中存入一个任意大的数。 (4)运行程序并检查运行结果。 (6)反复修改被开方数,运行程序、观察结果,验证程序的正确性。 DATA SEGMENT M DW 2453 N DW ? CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA AX,M LEA BX,N MOV SI,AX MOV DI,BX MOV BX,0001 MOV DX,0000 MOV AX,[SI] CONTINUE:SUB AX,BX JB COMPLETE 18 INC DX ADD BX,0002 JMP CONTINUE COMPLETE:MOV [DI],DX MOV AH,4CH INT 21H CODE ENDS END START 思考题 ① 如果二进制加数和被加数不限于四字节而为任意字节时,程序应作如何改动。 ② 修改原有的无符号数的排序程序为带符号数的排序程序。 ③ 被开方数是一压缩型的 BCD 码 十进制数时,程序应作如何修改。 ( 二) MASM 汇编程序和 LINK 连接程序的使用操作 在 DEBUG 中,使用 A 命令建立程序,一般不能使用标号和伪指令,并不能保存汇编语言源程序,适用于简单程序。 MASM 宏汇编程序可以将编辑程序建立的源程序文件进行汇编,汇编后在盘上建立目标文件、列表文件和交叉参考文件。 而目标文件经 LINK 程序连接以后成为可执行的文件,它可以在 DOS 下执行也可在 DEBUG 下调试。 计算机钢琴程序 1)实验内容 根据乐曲中不同的音符是由输出不同频率的声波而产生的原理,通过设置 PC 机中 8253 定时器不同的计数值,可由扬声器发出不同的曲调。 以下是实现 PC 机作为一架可弹奏的钢琴演奏预定的曲调。 程序中采用了 INT 21H 软中断调用了 DOS 的常用子程序。 源程序为: DATA SEGMENT MESS DB ‘Push any key to stop!’, 0dH, 0aH, ’$’ TABLE DW 524,588,660,698,784,880,988,1048,1176,1320,0 TABLEL DB 31H,31H,32H,31H,34H,33H,3BH DB 31H,31H,32H,31H,35H,34H,3BH DB 31H,31H,38H,36H,34H,33H,32H,3BH DB 36H,36H,36H,34H,35H,34H,3BH,0AAH DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ STA DB 256 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA, SS: STACK, ES: DATA 19 START PROC FAR DIV WORD PTR [TABLE+BX] PUSH DS MOV BX, AX XOR AX, AX MOV AL, 10110110B PUSH AX OUT 43H, AL MOV AX, DATA MOV AX, BX MOV DS, AX OUT 42H, AL MOV ES, AX MOV AL, AH MOV AH, 09H OUT 42H, AL LEA DX, MESS IN AL, 61H INT 21H OR AL, 03H KK: LEA SI, TABLEL OUT 61H, AL CALL DELAY IN AL, 61H AND AL, 0FCH OUT 61H, AL : INC SI SING: MOV AH, 06H JMP SING MOV DL, 0FFH FINISH: RET INT 21H START ENDP JNE FINISH MOV AL, [SI] DELAY PROC NEAR ; 延时子程序 CMP AL, 3BH PUSH CX JNE DDD PUSH AX CALL DELAY MOV AX, 500H ; 大循环次数 JMP X1: MOV CX, 0FFFFH ; 小循环次 数 DDD: CMP AL, 0AAH X2: DEC CX JE KK JNZ X2 SUB AL, 31H DEC AX SHL AL, 01H JNZ X1 MOV BL, AL POP AX MOV AX, 0000H POP CX MOV DX, 12H RET MOV BH, 00H DELAY ENDP CODE ENDS END START 2)实验步骤 ( 1)利用 EDIT 全屏幕编辑程序或 TURBO PASCAL 中的编辑功能输入以上程序,以文件名为 存盘。 ( 2)在 DOS 系统下执行子目录 MASM 中的执行文件 ,用宏汇编程序将 .汇编成目标文件。 操作过程如下: 显示 键入 20 C:\MASM MASM  MICROSOFT(R) „„„„ COPYRIGHT(C)„„„„„ SOURCE FILENAME [.ASM] PLAYPIA  OBJECT FILENAME [] SOURCE LISTING[] PLAYPIA  CROSS。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。