77范文网 - 专业文章范例文档资料分享平台

微机原理与接口实验指导书(2010版)(7)

来源:网络收集 时间:2019-04-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验六 计算N!的实验

一、实验要求:编写计算N!的程序。数值N由键盘输入,结果在屏幕上输出,N的范围为0~65535,

即刚好能被一个16位寄存器容纳。

二、实验目的:通过编制一个阶乘计算程序,了解高级语言中的数学函数是怎样在汇编语言一级上实现的。 三、实验说明:编制附乘程序的难点在于随着N的增大,共结果远不是寄存器所能容纳。这就必须把结果放在一个内存缓冲区中。然而乘法运算只能限制于两个字相乘,因此要确定好算法,依次从缓冲区中取数,进行两字相乘,并将DX中的高16位积作为产生的进位。程序根据阶乘的定义:N!=N*(N-1)*(N-2)*?*2*1,从左入右依次计算,结果首先将BP初始化为存放N值,然后使BP为N-1,以后BP依次减1,直至变化为1。每次让BP与BUF中的字单元按由低到高的次序相乘,低位结果AX仍保存在相应的BUF字单元中,最高位结果DX则进到进位这单元CY中,以作为高字单元相乘时从低字来的进位,初始化CY为0,计算结果的长度随着乘积运算而不断增长,由字单元LEN指示。当最高字单元与BP相乘时,若DX不为0,则结果长度要扩展。 四、实验程序框图: 五、实验程序: CRLF MACRO

MOV AH,02H MOV DL,0DH INT 21H

MOV AH,02H MOV DL,0AH INT 21H ENDM

DATA SEGMENT

MESS1 DB 'INPUT THE NUMBER ACCORDING TO HEXNUM!',0DH,0AH,'$'

MESS2 DB 'THE RESULT IS(HEX):$'

ERROR DB 'INPUT ERROR!',0DH,0AH,'$' LEN DW 1 CY DW ?

BUF DW 256 DUP (0) DATA ENDS

STACK SEGMENT

STA DW 32 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP MOV AH,09H

MOV DX,OFFSET MESS1

INT 21H ;显示输入提示信息 CALL GETNUM ;读取键入的N值 MOV BP,DX ;N值送BP CMP BP,0 JZ EEE CMP BP,1

JZ EEE ;N=0或N=1则转EEE MOV SI,OFFSET BUF ;缓冲区首址

MOV [SI],DX ;缓冲区初始化为值N

30

XXX: DEC BP ;N值减1 CMP BP,0001H

JZ LLL ;若为1则转结束LLL XOR BX,BX ;偏移指针清0 MOV WORD PTR [CY],0 ;进位单元清0

MOV CX,[LEN] ;当前结果长度送CX TTT: MOV AX,[SI+BX]

MUL BP ;相乘

ADD AX,[CY] ;加低位进位 JNC JJJ ;结果无进位转JJJ

INC DX ;有进位高位单元加1 JJJ: MOV [SI+BX],AX ;结果送缓冲区中

MOV [CY],DX ;高位单元送进位单元 INC BX

INC BX ;一个字长度 LOOP TTT ;循环 CMP DX,0000H

JZ BBB ;最后1次的进位为0则转BBB INC WORD PTR [LEN] ;长度加1

MOV [SI+BX],DX ;进位送缓冲区中 BBB: JMP XXX

EEE: MOV SI,OFFSET BUF

MOV WORD PTR [SI],1 ;结果为1 LLL: MOV AH,09H

MOV DX,OFFSET MESS2 INT 21H

MOV CX,[LEN]

MOV BX,CX ;长度 DEC BX

SHL BX,1 ;1个字为两个字节 CCC: MOV AX,[SI+BX] CALL DISP DEC BX

DEC BX ;显示结果 LOOP CCC

MOV AX,4C00H ;结束 INT 21H DISP1 PROC NEAR MOV BL,AL MOV DL,AL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL RET DISP1 ENDP

DISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H

31

DDD: MOV AH,02H INT 21H RET DISPL ENDP

DISP PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX MOV AL,AH CALL DISP1 POP AX CALL DISP1 POP DX POP CX POP BX RET

DISP ENDP ;字符和数据显示子程序 GETNUM PROC NEAR PUSH CX XOR DX,DX GGG: MOV AH,01H INT 21H

CMP AL,0DH JZ PPP

CMP AL,20H JZ PPP

SUB AL,30H JB KKK CMP AL,0AH JB GETS CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK

SUB AL,20H GETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG

KKK: MOV AH,09H

MOV DX,OFFSET ERROR INT 21H PPP: PUSH DX CRLF POP DX POP CX RET

32

GETNUM ENDP ;键盘字符读取子程序 CODE ENDS END START

33

实验七 字母的大小写转换

一、实验要求:

显示选择项菜单,接收键盘输入以确定大写转小写,小写转大写或返回DOS。然后根据提示输入字符串(以回车为结束符),程序按先前选择进行大小写转换并显示,之后返回选择项菜单。 二、实验目的:了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。 三、实验程序框图:

开始 初始化 显示提示信息 返回DOS 调用DOS中断 接收键入的字符 Y 是3否 N Y N Y Y 是2否 是1否 等待键入字母并显示 等待键入字线并显示 是回车否 是回车否 N 小写不变,大写变小写存入小写缓行区 大写不变小写变大写存入大写缓行区 显示大写缓存区内容 显示小写缓存区内容

四、实验程序: CRLF MACRO MOV AHM02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H

34

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库微机原理与接口实验指导书(2010版)(7)在线全文阅读。

微机原理与接口实验指导书(2010版)(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/582812.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: