微机原理-代码转换程序

微机原理-代码转换程序
微机原理-代码转换程序

课程设计任务书

学生姓名:专业班级:自动化

指导教师:工作单位:自动化学院

题目: 代码转换程序

初始条件:

字母或数制之间的转化程序,按S后,键盘输入小写字母,显示对应的大写字母,按B后,键盘输入二进制数,显示对应的十六进制数。结果显示在屏幕上。按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

(1)设计任务及要求分析

(2)方案比较及认证说明

(3)系统原理阐述

(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明

(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释

(6)调试记录及结果分析

(7)总结

(8)参考资料

(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图

时间安排:

1月18日~1月20日:收集资料,方案选择

1月21日~1月23日:整体流程,程序细节

1月25日~1月27日;调试程序,报告撰写

1月28:交设计报告,程序演示,答辩

指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录

1设计任务要求 (1)

1.1实现任务 (1)

1.2任务分析 (1)

2方案比较 (2)

3系统实现原理 (3)

3.1系统资源 (3)

3.2DOS功能调用 (3)

4.软件设计与实现 (5)

4.1程序设计思想 (5)

4.1.1程序功能描述 (5)

4.1.2流程图 (5)

4.2算法分析 (9)

4.2.1小写字母转大写字母算法 (9)

4.2.2二进制转换为十六进制算法 (9)

4.2.3DOS中的字符显示功能 (10)

5软件建立与调试 (11)

5.1汇编源程序的建立 (11)

5.2程序调试与运行结果 (12)

6心得体会 (14)

参考文献 (15)

附录一源程序及其注释 (16)

附录二程序运行效果图 (23)

附录三本科生课程设计成绩评定表 (24)

摘要

本文通过汇编语言设计实现简单的代码转换功能,把输入的小写字母转换为大写字母和输入的二进制转换为十六进制,并显示转换结果。程序设计过程中将调用DOS提供的多种中断功能,结合汇编语言灵活的指令方式,完成代码的转换。最后会用到DEBUG工具和其他方法调试程序,最终实现较理想的效果。

关键词:DOS 代码转换 ASCII

代码转换程序

1设计任务要求

1.1实现任务

设计任务要求是:字母或数制之间的转化程序,按S后,键盘输入小写字母,显示对应的大写字母,按B后,键盘输入二进制数,显示对应的十六进制数。结果显示在屏幕上。按Q退出程序。

1.2任务分析

根据设计要求分析可知,本程序主要完成不同代码间的转换,并在屏幕上显示转换结果。在程序提示下输入功能选择键S或B,来确定程序执行小写字母转换为大写字母或将二进制数转换为十六进制显示。转换过程可以循环进行,直到输入退出功能键Q或q。

2方案比较

在程序设计中,有时可以将具有特定功能的一定代码块定义为一个过程,使整个程序清晰,便于理解和调试。此代码块的定义有宏定义和段内子程序定义两种方法。下面是功能模块定义方式的选择:

方案一:宏定义可以将需重复使用的程序部分定义为一条宏指令,汇编后产生所需代码序列,在程序中需要的地方嵌入。这种方法与过程调用不同,它不使用堆栈,可减少程序的书写。宏调用时的实元表,可以避免子程序中因变量传送带领的麻烦。且宏调用中的实元还可以是常数、寄存器、存储单元名以及用寻址方式能找到的地址表达式,这样使程序灵活性增强。然而,宏调用每调用一次就将宏定义展开一次,调用次数越多,占用的存储空间就越大。即宏指令的使用只简化了源程序,不节省目标程序所占用的内存单元。

方案二:子程序在程序代码段内编写,在程序运行期间,由主程序调用,在目标代码中只占用它自身大小的内存空间。使用调用子程序的方法,汇编后产生的目标代码少,节约空间。但是,它在简化程序方面不如宏指令方便。

经比较,因本设计对子程序的调用次数较多,且子程序段较短,合理规划,仍可以使程序具有很高的可读性。故采用调用子程序的方法。

3系统实现原理

3.1系统资源

8086CPU曾是使用广泛的16位微处理器,它的出现使对微型计算机的发展起到了巨大的推动作用。它的指令集为用户提供了丰富的8位指令和一些功能较强的16位数据处理指令。8086的指令具有灵活的指令格式、较强的运算能力和极强的寻址能力。为此,虽然各种高级语言为我们开发大型复杂系统提供了方便,但在对运算速度和效率极高的地方,8086汇编语言还是占有稳定的地位。而8086指令系统的运行只需一台具有虚拟8086的计算机即可运行。

除此之外8086还为我们提供了丰富的DOS功能和BIOS功能调用,方便我们处理各种需求。本设计即使用到多种DOS功能来辅助完成软件编写和完善功能。

3.2DOS功能调用

DOS是美国Microsoft公司为IBM PC研制的磁盘擦配置系统(Disc Operating System)。DOS不仅为用户提供了许多使用命令,而且还有用户可以直接调用的上百个常用子程序。这些子程序的功能主要是进行磁盘的读/写、控制管理、内存管理、基本输入/输出管理等。在使用时,用户不需要了解各种I/O接口硬件的详细情况就能直接完成对I/O的控制和管理。为方便使用,DOS将所有子程序从1号开始顺序编号,这些编号成为DOS功能调用号。其调用过程为:

1、DOS功能调用号传送AH寄存器。

2、如果需要,按照要求给定输入参数(有的不需要输入参数)。

3、写入中断指令INT 21H。

调用结束,按功能使用其输出参数。

以下介绍本设计将使用到的几个有关DOS功能。

1.单字符输入-1号

功能:从键盘输入1个字符并在光标处显示。

输入参数:无。

输出参数:AL=ASCII码。

2.单字符输入-8号

功能:从键盘输入1个字符,不在屏幕上显示。

输入参数:无。

输出参数:AL=ASCII码。

3.单字符输出-2号

功能:在屏幕上显示一个字符(ASCII码)。

输入参数:DL=ASCII码。

输出参数:无。

4.多字符输出-9号

功能:多个字符输出到屏幕显示。

输入参数:DS:DX=输出字符缓冲区首地址。

输出参数:无。

5.过程终止-4CH号

该调用功能是结束当前程序,并且返回调用它的程序。如果在DEBUG状态下运行,则返回DEBUG;如过在DOS下运行,则返回DOS。在汇编语言结束处加上“MOV AH,4CH”和“INT 21H”两条指令,以利于程序执行完毕,返回操作系统控制。

4.软件设计与实现

4.1程序设计思想

通过调用DOS系统的输入输出功能,使程序具有一定的可视化程度,使用8086丰富的指令系统对输入数据进行处理,最终得到运算结果,在屏幕输出。因为本设计需满足两个功能,并需输入多字符,故将使用汇编语言的顺序结构、分支结构和循环结构。主程序初始化后,再提示信息下输入功能选择键,程序会根据输入的键跳入相应的子程序中执行代码转换。这是一个分支结构。子程序执行完毕,可以根据需要选择结束程序或继续下一次转换。

4.1.1程序功能描述

启动程序后,在DOS框中提示输入功能选择键后,程序会跳转到所选择的相应的程序段执行,在提示下输入小写字母或16位二进制,当输入完毕后,屏幕上会显示运算结果。然后,系统提示是否继续,此时可以选择进行下一次代码转换或结束程序。为方便观察转换结果,程序中的输入字符显示与提示信息的显示都将分行显示。由于程序中的提示信息比较齐全和完善,很容易指导操作者进行代码转换。

4.1.2流程图

主程序开始后,先进行初始化,装载相关参数。然后会有功能选择的提示,根据提示输入选择符号“S”或“B”选择要进行是数据转换功能。输入选择后,程序跳入相应的子程序中去执行转换并显示结果。子程序结束后返回主程序退出选择处,此时需要根据信息提示,选择是继续转换还是结束程序。子程序的选择是一个分支结构,而子程序中的转换代码含有顺序结构和循环结构,具体见子程序流程图。

主程序流程图如下:

开始

初始化

功能选择

小写字母转换为大写子程序

二进制转

为十六进

制子程序是否退出

结束

S B

Y

N 图4-1 主程序流程图

本程序有两个子程序,分别为小写字母转大写字母子程序和二进制转十六进制子程序。二者的选择调用由主程序的功能选择决定。

小写字母转大写子程序流程图:

子程序入口

提示输入小

写字母

输入字符

是否为小写

Y

转换 -20H

显示结果

子程序结束

图4-2 小写字母转大写流程图

小写字母转大写字母子程序结构较简单,转换步骤少,易于实现功能。当调用此子程序时,程序指针跳转到子程序入口,沿其流程执行。因输入字符在计算机中都以其ASCII值录入,在DOS显示时也是以ASCII码值输出,故只需对输入字符的ASCII码做处理即可。因为前文所述,对于小写字母的ASCII码减去20H 即对应相应大写字母的ASCII码,然后调用DOS显示功能即可显示转换结果。

二进制转十六进制子程序流程图:

子程序入口

提示输入16位二进制

按位输入

是否为1或0

是否输完16位

显示,并设置二进制数相应

数据转换并存储

显示结果

子程序结束

N

N

Y

Y

图4-3 二进制转十六进制流程图

主程序跳转如进制转换程序时,将沿其流程执行下去。因为要输入16位二

进制数,而每次输入均为单字符输入,输入参数为ASCII码值,故需根据输入值对初始十六进制数做处理。首先预设一个16位变量,输入按书写习惯,从最高位开始输入,当输入“1”时,将对于位置位1,输入“0”时,将对应位置位0,同时输入次数加一,若输入为“1”“0”以外的值,不对初始变量做处理,输入位数也不变,如此输入16位后,输入段结束,程序自动开始代码的转换,并将转换的结果显示出来,最后跳回主程序,选择是否退出程序。

4.2算法分析

4.2.1小写字母转大写字母算法

对于DOS提供的键盘输入子程序,输入的字符在计算机内部均以ASCII码形式存在。而小写英文字母“a”?“z”的ASCII码为61H?7AH,大写字母“A”?“Z”的ASCII码为41H?5AH。观察可知对应的小写字母ASCII码值比大写字母ASCII码值要大20H,即32。因此对输入的小写字母的ASCII码减去32即为对应的大写字母的ASCII值,利用DOS提供的单字符显示子程序可将转换结果显示在屏幕上。

4.2.2二进制转换为十六进制算法

在本程序中暂且将输入的二进制数位数设置为16位。对于16位二进制数,其转换为十六进制的过程为:从最低位开始,每四位为一个单元,计算出对于的十六进制值。计算得到的十六进制值小于10的仍旧用1?9表示,高于9的则使用a?f(A?F也可以)表示10?15。

在显示方面,输入二进制可以按位,调用DOS的单字符输入子程序,输入1或0,对于其他数据则不显示。当输入达到十六位后,开始转换。因转换的结果为0?9、A?F,而屏幕显示对应值的ASCII值。0?9的ASCII码值为30H?39H,A?F的ASCII码值为41H?46H。因此可以据此,转换值小于10时,结果加上30H,转换值大于等于10时,结果在加上30H的基础上在加上7H (A的ASCII

码值比9的大7),然后即可使用DOS单字符输出子程序,对转换得到的四位十

六进制数依次显示。

4.2.3DOS中的字符显示功能

在小写字母转大写字母程序中,需使用到单字符输入和单字符输出功能,分别输入小写字母和显示转换的大写字母,此外还有相应的功能提示语句,则会用到多字符输出子程序。

在二进制转换为十六进制程序中,需使用到单字符输入和单字符输出功能。要特别提出的是,此处的单字符输入功能为INT 21H的8号功能,只输入而不负责显示。因为为只显示0和1两个数字,对于正确的键值才调用单字符输出子程序显示。同样,要用的起功能提示作用的多字符输入子程序。

DOS中的各显示功能调用方法见上节功能描述及附录一中的具体程序。

5软件建立与调试

5.1汇编源程序的建立

汇编程序的编写,可以先使用EDIT、记事本等文本编辑软件,编辑源程序,保存为.asm文件;然后使用TASM或MASM汇编程序,对源程序进行汇编,生成.obj 文件-目标文件,以及调试用.LST-列表文件;最后是LINK链接程序,对使用的目标文件和库文件进行连接,生成.exe文件,然后点击TASM或MASM的运行按钮,查看程序运行效果。

汇编程序的建立过程可用下图表示:

使用文本编

辑软件

.asm

汇编程序

.obj

连接程序

生成.exe

图5-1 汇编程序建立流程图

根据以上步骤一步一步建立程序。在汇编程序处,如果程序中存在错误,则编译器会提示有错误,如下图:

图5-2 运行错误时系统提示

则此时根据提示,在程序中找到错误,然后改正,知道汇编无误。然后即可连接-生成.exe,由此完成源程序的建立。

5.2程序调试与运行结果

程序的调试将用到一个针对汇编语言程序设计的调试工具—DEBUG,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。调试方法为:在汇编环境(此处使用MASM)中首先要生成.exe文件,选中“运行-DEBUG调试”,DEBUG程序正常启动,提示符显示为“-”。出现“-”后,根据调试需要,输入正确的DEBUG 命令,根据显示内容,修改源文件。

此外,可以根据程序运行的效果跟预期效果相比较,以找出程序中的不足与漏洞,尝试-对比-修改-尝试…直到达到满意的结果。因为第二种方法比较快速且便于操作,我选择这种方法。

在调试过程中,因为输入小写字母转换为大写字母比较容易,但是因为显示转换结果后,接着会显示提示信息,其效果如图:

图5-3 分行显示前效果

因提示信息紧跟转换结果出现,使人不容易观察结果,故在显示转换结果后,对光标进行换行出来,使显示结果与提示信息分行显示,便于观察且美观。

在二进制转十六进制的子程序中,也用到分行显示和信息提示内容,只需做同样的处理即可达到相同的效果。

经过数番修改,最终程序达到了较理想的效果,效果如下图所示:

图5-4 最终运行效果

6心得体会

通过这次的《微机原理与接口技术》课程设计,使我又学习了很多知识,而且是课堂上不容易学到的知识。俗话说,“实践出真知”,课堂上学习到的理论知识,如果不转化为实践的话,始终都将是一纸空文,没什么大的价值。而这次的课设,则给了我把理论转化为实践的机会,使我获益匪浅。

首先,通过课设中的程序设计,结合课堂上的理论,我能熟练地使用汇编语言编写程序,熟悉各寄存器的使用方法和数据传送与处理,了解汇编语言在计算机中运行的规律。在汇编程序编写中,我还学到了调用DOS来辅助程序设计,以及DEBUG工具的使用。这些技巧对以后再次开放汇编程序将起到很大的帮助。

其次,在之前的课程中,我们所学习的编程语言如C、Visual Basic,都是高级语言,以其自然的语法和结构,和方便的调试工具,使我们很快学习吸收,并对汇编等低级语言有不少偏见。而此次课设,改变了我的这个看法。汇编语言并不像想象中的那么晦涩难懂,其实它也有灵活的结构和处理方式,而且强大的寻址能力使程序运行很快。此外,较难处理的寄存器,使我在程序编写与调试中渐渐理解了计算机底层对各数据的处理方式和运行机理,即我打开了计算机这个黑匣子,了解了它的内部。因此,可以说我的视野又得到的很大的拓展。如今,我对汇编语言也有了很浓厚的兴趣,在以后的学习中,我将尝试使用C语言和汇编语言混合编程,来实现相关电子产品的设计。

再次,因为汇编语言与硬件联系比较紧密,通过对汇编程序设计的深刻理解,也在某种程度上帮助我对硬件的驱动与设计有了不少的认识,而且也渐渐能把软件与硬件的结合起来。

《微机原理与接口技术》是一门实用性很高,它不仅涉及到计算机的底层高效语言设计,还跟硬件有着紧密的联系。而且微型计算机从诞生至今已有30余年,其应用已涉及各个领域。与此同时,微机原理与接口技术也得到了飞速发展。掌握微机原理与接口技术是对计算机及自动控制等专业人才的基本要求。在以后的学习与工作中,我都将不断完善我在这方面的能力。

参考文献

[1]周佩玲彭虎傅忠谦.微机原理与接口技术.北京:电子工业出版社,2005

[2]冯继超.微机原理实验指导书.武汉:武汉理工大学教材中心,2008

[3]李珍香刘红梅赵润林.汇编语言课程设计案例精编.北京:中国水利水电出版社,2004

[4]沈美明温冬蝉.IBM PC汇编语言程序设计.北京:人民邮电出版社,2002

[5]王爽.汇编语言(第2版).北京:清华大学出版社,2008

附录一源程序及其注释

DATA SEGMENT

BUF1 DB'Choose function:',0dh,0ah

buf2 DB'S:a-->A ,B:0101B-->5F',0dh,0ah,'$'

BUF3 DB0dh,0ah,'Input the Lowercase:',0dh,0ah,'$'

BUF4 DB0dh,0ah,'Input the Binary:',0dh,0ah,'$'

BUF5 DB'Press Q or q to quit,press other key to continue!',0dh,0ah,'$'

BUF6 DB'The result is:',0DH,0AH,'$'

BUF7 DB0DH,0AH,'$'

BUF8 DB 4 DUP (?),'H',0DH,0AH,'$'

BINA DW?

DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:

MOV AX,DATA

MOV DS,AX

SELECT:

;多字符显示,显示功能选择

MOV DX,OFFSET BUF1

MOV AH,9

INT 21H

代码转换程序设计

微机原理及接口技术 上机实习 题目数制转换课程设计学院自动化学院 专业电气工程及其自动化班级电气1206 姓名周杰 指导教师李道远 2014 年12 月28 日

上机实习任务书 学生姓名:周杰专业班级:电气1206班 指导教师:李道远工作单位:自动化学院 题目: 代码转换程序设计 初始条件: 完成一个字母或数制之间的转化程序,主程序分别具有3 种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“Q”键退出。 1)实现二进制数向十六进制数的转换 2)实现十六进制数向二进制数的转换 3)实现十六进制数向十进制数的转换 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)设计任务及要求分析 (2)方案比较及认证说明 (3)系统原理阐述 (4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明 (5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释 (6)调试记录及结果分析 (7)总结 (8)参考资料 (9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图

目录 一、课题需求分析 (1) 二、课程设计分析 (1) 1.功能描述 (1) 2. 功能模块分析 (2) 三、设计方案 (3) 1.系统流程图 (3) 2.子程序模块设计 (4) 2.1二进制转换成十六进制模块 (4) 2.2十六进制数转换成二进制数模块 (4) 2.3十六进制数转换成二进制数模块 (4) 3. 程序详细设计 (4) 3.1数据段程序设计 (4) 3.2宏定义体 (5) 3.3代码段程序设计 (6) 3.4二进制转换成十六进制子程序 (7) 3.5十六进制数转换成二进制数子程序 (8) 3.6十六进制数转换成十进制数子程序 (9) 4.程序调试结果及分析 (10) 结束语 (13) 参考文献 (14) 附录 (15)

(完整版)微机原理课后习题参考答案

第一章 2、完成下列数制之间的转换。 (1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H 3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。 答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。 组合型:254=(001001010100)BCD 非组合型:254=(00000010 00000101 00000100)BCD 7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少? 答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。+32767~ -32768。 9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。 (1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确 [X-Y]补=10111001B=00010010+10100111=(-71D)补正确 (2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确[X-Y]补=11101001+00001011=11110100B=(-12D)补正确 (3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确 [X-Y]补=00010010+00001111=00100001B=(33D)补正确 (4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。 13、微型计算机的主要性能指标有哪些? 答:CPU字长、存储器容量、运算速度、CPU内核和IO工作电压、制造工艺、扩展能力、软件配置。 第二章 2、8086标志寄存器包含哪些标志位?试说明各标志位的作用。 答:进位标志:CF;奇偶校验:PF;辅助进位:AF;零标志:ZF;符号标志:SF;溢出标志:OF。 5、逻辑地址与物理地址有什么区别?如何将逻辑地址转换为物理地址? 答:物理地址是访问存储器的实际地址,一个存储单元对应唯一的一个物理地址。逻辑地址是对应逻辑段内的一种地址表示形式,它由段基址和段内偏移地址两部分组成,通常表示为段基址:偏移地址。 物理地址=段基址*10H+偏移地址。 6、写出下列逻辑地址的段基址、偏移地址和物理地址。 (1)2314H:0035H (2)1FD0H:000AH 答:(1)段基址:2314H;偏移地址:0035H;物理地址:23175H。 (2)段基址:1FD0H;偏移地址:000AH;物理地址:1FD0AH。 8、设(CS)=2025H,(IP)=0100H,则当前将要执行指令的物理地址是多少? 答:物理地址=(CS)*10H+(IP)=20350H 9、设一个16字的数据区,它的起始地址为70A0H:DDF6H(段基址:偏移地址),求这个数据区的首字单元和末字单元的物理地址。

汇编数值转换器大作业解读

《汇编语言程序设计》 综合程序设计实验报告 题目:数制转换器 班级:信1101-2班 姓名:王兵茹李夏蕾 胡佳奇 学号:20112917 20112912 20113013 完成日期:2013-11-24

目录 一、简介 二、小组成员及具体分工 三、需求分析与设计 四、代码及分析 五、总结

一、简介 本设计利用汇编语言来实现数制转换设计,用于方便进制之间的互换。设计的内容可以使十六进制、八进制、二进制、十进制的数制互相转换。 二.小组成员及具体分工 小组成员:王兵茹李夏蕾胡佳奇 具体分工:我们三个一开始是各自的分工查资料,先看看单个数制转换,王兵茹负责的是十六进制,李夏蕾负责的是十进制,胡佳琪负责的是二 进制。 最后我们几个一起完成了程序的主要设计,由于大体思路相同,最后加上了八进制的转换。 在程序的修改方面,王兵茹进行了后期的加工,增加了dios中断,把单调的退出改成文本形式下的退出,在退出之前,执行清屏。 最后我们几个商量着完成了实验报告和ppt的制作,经过我们几个人的努力,虽然做的不是特别好,但还是各有收获。 三、需求分析与设计 ●需求分析 通过编程实现显示菜单,然后通过键盘输入菜单相应的选项进入相应的数制转换,然后通过选项对应的子程序跳转来实现转换,子程序中通过宏定义定义数制前后的数制,并且在宏定义过程中实现数制转换算法,最后输出转换后的进制数。 ●设计 ①运行的设计框图 ②整个系统的设计框图

③子程序之间调用关系框图 我们的这个程序主要就是用到的子程序的调用和大量的宏定义,对于输入时的宏定义有charin,strin,numin,输出时的宏定义有charout,strout,numout,输出的时候用到的是栈push和pop,在压栈push时,用到了irp不定重复伪操作。 定义通用inax宏,确定转换之前的进制,例如inax cx、cx=2是把转换之前的进制确定为2存到cx中 定义通用outax宏,确定转换之后的进制,例如outax bx、bx=2是把转换之后的进制确定为2存到bx中 通用宏charin逐个输入转换之前进制字符

实验三 代码转换

电工电子实验中心 实验报告 课程名称:计算机硬件技术基础实验名称:代码转换 姓名:学号: 评定成绩:审阅教师:实验时间:2017.05.02 南京航空航天大学

— 一、实验目的要求 1) 掌握 ASCII 码转换的基本方法。 2) 学会 INT21 功能调用, 掌握人机对话的设计方法。 3) 进一歩熟悉 Tddebug 调试环境和 Turbo Debugger 的使用。 二、实验任务 从键盘输入小写字母(最多 20 个),以“.”号作为结束标志, 将其变换成相应的大写字母输岀在屏幕上。 三、实验代码 CRLF MACRO MOV DL, 0DH MOV AH, 02H INT 21H MOV DL, 0AH ;宏定义回车,换行 MOV AH, 02H INT 21H ENDM DATA SEGMENT MES1 DB 'PLEASE INPUT THE SMALL LETTER,ENDED WITH ".":$' MES2 DB 'THE CAPTAL LETTER IS:$' SMALL DB 50 ;?预留键盘输入缓冲区长度为50个 DB 0 ;?预留实际键盘输入字符数的个数 DB 50 DUP(0) CAPITAL DB 50 DUP('$') ;?预留大写字母缓冲区长度为50个 DATA ENDS STACK1 SEGMENT STACK DB 100 DUP (0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START PROC FAR PUSH DS MOV AX, 0 PUSH AX

微机原理课后习题答案

李伯成《微机原理》习题第一章 本章作业参考书目: ①薛钧义主编《微型计算机原理与应用——Intel 80X86系列》 机械工业出版社2002年2月第一版 ②陆一倩编《微型计算机原理及其应用(十六位微型机)》 哈尔滨工业大学出版社1994年8月第四版 ③王永山等编《微型计算机原理与应用》 西安电子科技大学出版社2000年9月 1.1将下列二进制数转换成十进制数: X=10010110B= 1*27+0*26+0*25+1*24+0*23+1*22+1*21 +0*21 =128D+0D+0D+16D+0D+0D+4D+2D=150D X=101101100B =1*28+0*27+1*26+1*25+0*24+1*23+1*22+0*21+0*20 =256D+0D+64D+32D+0D+16D+4D+0D=364D X=1101101B= 1*26+1*25+0*24+1*23+1*22+0*21 +1*20 =64D+32D+0D+8D+4D+0D+1D=109D 1.2 将下列二进制小数转换成十进制数: (1)X=0.00111B= 0*2-1+0*2-2+1*2-3+1*2-4+1*2-5= 0D+0D+0.125D+0.0625D+0.03125D=0.21875D (2) X=0.11011B= 1*2-1+1*2-2+0*2-3+1*2-4+1*2-5= 0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D (3) X=0.101101B= 1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6= 0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D 1.3 将下列十进制整数转换成二进制数: (1)X=254D=11111110B (2)X=1039D=10000001111B (3)X=141D=10001101B 1.4 将下列十进制小数转换成二进制数: (1)X=0.75D=0.11B (2) X=0.102 D=0.0001101B (3) X=0.6667D=0.101010101B 1.5 将下列十进制数转换成二进制数 (1) 100.25D= 0110 0100.01H (2) 680.75D= 0010 1010 1000.11B 1.6 将下列二进制数转换成十进制数 (1) X=1001101.1011B =77.6875D

坐标转换源代码--GPS定位程序(C--)

坐标转换源代码--GPS定位程序(C++) GPS数据处理中为了满足不同的需要,处理的数据要进行坐标转换,得到在不同坐标系统下的结果,下面是笛卡尔坐标系,大地坐标系,站心地平坐标系(线型和极坐标形式)之间的转换源代码: 头文件: #ifndef _COORDCOVERT_H #define _COORDCOVERT_H #include "stdlib.h" //WGS-84椭球体参数 const double a=6378137.0;//长半轴 const double flattening=1/298.257223563;//扁率 const double delta=0.0000001; typedef struct tagCRDCARTESIAN{ double x; double y; double z; }CRDCARTESIAN; typedef CRDCARTESIAN *PCRDCARTESIAN;

//笛卡尔坐标系 typedef struct tagCRDGEODETIC{ double longitude; double latitude; double height; }CRDGEODETIC; typedef CRDGEODETIC *PCRDGEODETIC; //大地坐标系 typedef struct tagCRDTOPOCENTRIC{ double northing; double easting; double upping; }CRDTOPOCENTRIC; typedef CRDTOPOCENTRIC *PCRDTOPOCENTRIC; //站心地平坐标系(线坐标形式) typedef struct tagCRDTOPOCENTRICPOLAR{ double range;

代码转换汇编

二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。点击此处将给出十进制数和8421BCD编码的对应关系表。 1、BCD码与十进制数的转换 BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如: 75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5 注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。 例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时,其值为18。 又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD 码中,它是个非法编码 . 2、BCD码的格式 计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。 所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为: _ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。 组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010 3、BCD码的加减运算 由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于 计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。 解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则: (1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9, 则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。 (2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正. (3)低位修正结果使高位大于9时,高位进行加6修正。 下面通过例题验证上述规则的正确性。 用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95 用BCD码求91+83 用BCD码求94+7 用BCD码求76+45 两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指

微机原理课后作业答案(第五版)

6、[+42]原=00101010B=[+42]反=[+42]补 [-42]原=B [-42]反=B [-42]补=B [+85]原=01010101B=[+85]反=[+85]补 [-85]原=B [-85]反=B [-85]补=B 10、微型计算机基本结构框图 微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。 存储器用来存放数据和指令,其内容以二进制表示。每个单元可存8位(1字节)二进制信息。 输入——将原始数据和程序传送到计算机。 输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。 接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。 总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。 13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。8086有16根数据线,80386有32根数据线。

1、8086外部有16根数据总线,可并行传送16位数据; 具有20根地址总线,能直接寻址220=1MB的内存空间; 用低16位地址线访问I/O端口,可访问216=64K个I/O端口。 另外,8088只有8根数据总线 2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU) BIU负责CPU与内存和I/O端口间的数据交换: BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。 执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。 执行完指令后,可通过BIU将数据传送到内存或I/O端口中。 指令执行单元(Execution Unit,EU) EU负责执行指令: 它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。EU的算术逻辑单元(Arithmetic Logic Unit,ALU)完成各种运算。 6、见书P28-29。 7.(1)1200:3500H=1200H×16+3500H=15500H (2)FF00:0458H=FF00H×16+0458H=FF458H (3)3A60:0100H=3A80H×16+0100H=3A700H 8、(1)段起始地址1200H×16=12000H,结束地址1200H×16+FFFFH=21FFFH (2)段起始地址3F05H×16=3F050H,结束地址3F05H×16+FFFFH=4F04FH (3)段起始地址0FFEH×16=0FFE0H,结束地址0FFEH×16+FFFFH=1FFD0H 9、3456H×16+0210H=34770H 11、堆栈地址范围:2000:0000H~2000H(0300H-1),即20000H~202FFH。执行两条PUSH指令后,SS:SP=2000:02FCH,再执行1条PUSH指令后,SS:SP=2000:02FAH。 12、(2000H)=3AH, (2001H)=28H, (2002H)=56H, (2003H)=4FH 从2000H单元取出一个字数据需要1次操作,数据是283AH; 从2001H单元取出一个字数据需要2次操作,数据是5628H; 17、CPU读写一次存储器或I/O端口的时间叫总线周期。1个总线周期需要4个系统时钟周期(T1~T4)。8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

坐标转换流程

坐标转换流程: 第一步:在ArcMap中将公里网坐标的图上画一个矩形框,这个框不是随意的, 是与已有经纬度的图的的框的大小一致(即所框的范围一致),请附注这个矩形的大小: 第二步:在toolbox中的Conversion Tools的to coverage,将biankuang.shp和行政区域.shp(或其他公里网图)转成cov的文件夹(注意是转换出一个文件夹) 假设分别名为bbb和ccc,都是在c:\test下 (建议不在这里转,workstation有一个毛病,转换后面数据都会变成线数据, 这一步可以用ArcToolBox来做) 第三步:打开workstation的arc 第四步:将目录转到cov文件夹所在目录 命令:&work c:\test 第五步:进入arcedit 命令:arcedit disp 9999(这时才是进入编辑状态) 第六步:加cov,你先加那个图,再把边框 边框以背景的形式添上去 命令:editcov ccc drawen all -------------是按顺序执行 draw backcov bbb 2 backen all draw 第七步:加四个控制点,顺序:左下角-》左上角-》右上角-》右下角 (editfea tic(编辑控制点) select all delete (删除原来的控制点) save) add (加新控制点) 快捷键:ctr+v放大 ctr+f满平显示就是返回放大前 这时有1,3,5,6,7,8,9的option操作 5是删除last点 加完四个点,按9退出加了就存盘,退出编辑状态, save ccc q 第八步:那个经维度的文件转换成cov,目的是看四个控制点的坐标 找到社会要素的区镇_region.shp等四个文件 复制到c:\test

汇编实现大小写字母转换程序

一、题目要求 编写程序,接收键盘输入的字符串,将其中大写字母转化为小写字母,并显示转化后的字符串。键盘输入的字符串存于STRBUF缓冲区中,最多输入30个字符。 二、实现原理 字符串是由若干个字符构成,而字符在计算机中以ASCII码形式存储,因此字符串是一个ASCII码序列。小写字符’a’…’z’的ASCII是61H~7AH,大写字符A’…’Z’的ASCII是41H~5AH,因此将大写字母转化为小写字母的方法是:大写字母ASCII加上20H。 三、实验程序及流程图 程序首先调用0A号功能,等待用户输入字符串,并存入STRBUF中。然后对输入字符逐个检测,若为大写字符,则将其转化为小写字符,否则不变。最后采用循环结构,使用02号调用,逐个显示字符串中的字符。流程图如图4.11所示。 –1–

图4.11 程序流程图 程序代码如下。 DATA SEGMENT STRBUF DB 30,?,31 DUP (?) ;定义键盘接收缓冲区DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: –2–

第27章单片机实现密码锁MOV AX,DA TA MOV DS,AX LEA DX,STRBUF MOV AH,0AH INT 21H ;0A号调用,等待用户输入字符串 MOV CL,STRBUF+1 CMP CL,00 JZ EXITP MOV CH,00H MOV SI,2 XX1: MOV AL,STRBUF[SI] ;读取一个字符 CMP AL,’A’ JB NEXT CMP AL,’Z’ JA NEXT ;判断是否是大写字符,ASCII在41H~5AH之间 ADD STRBUF[SI],’a’-‘A’;大写字母ASCII值加20H NEXT: INC SI LOOP XX1 MOV DL,0AH MOV AH,02H INT 21H ;控制换行 MOV CH,00 MOV CL,STRBUF+1 MOV SI,2 XX2: MOV DL,STRBUF[SI] MOV AH,02H INT 21H INC SI LOOP XX2 ;显示字符串 EXITP: MOV AH,4CH INT 21H CODE ENDS END START –3–

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

代码转换(大小写字母转换)

北华航天工业学院 课程设计报告(论文) 设计课题:代码转换 大小写字母转换 专业班级:电子信息工程 学生姓名: 指导教师: 设计时间: 2010-12-16

北华航天工业学院电子工程系 微机原理课程设计任务书 指导教师:教研室主任: 年月日

内容摘要 在课程设计之前,具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法是必不可少的。因此原理部分重新温习并整理了相关知识。 课程设计要求进行大小写字母的转换。其实字母大小写的区别在于他们的ASCII码范围,它们之间的转换其实就是加减相应的ASCII码值。在判断输入的字母是大写的还是小写的(即判断输入符号ASCII码在41H~5AH还是在61H~7AH内)之后,决定判断是加上还是减去ASCII码值。 关键词:汇编代码转换大小写

目录 一、概述 (1) 二、方案设计与论证 (1) 1.汇编语言基础 (1) 2.方案设计 (2) 三、程序设计 (3) 1.程序设计流程图 (3) 2.程序代码 (4) 四、运行结果 (5) 五、心得体会 (6) 六、参考文献 (6)

一、概述: 在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。这些数制和编码根据其作用的不同,在存储形式上也有差异。在实际应用中,它们也因使用的要求不同而有所差异。在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。还有些代码转换需要根据使用要求通过编程完成。因此,代码转换是非数据处理中最常见的情况。 二、方案设计: 1、汇编语言基础 汇编:计算机不能直接识别和执行汇编语言程序,而要通过“翻译”把源程序译成机器语言程序(目标程序)才能执行,这一“翻译”工作称为汇编。汇编有人工汇编和计算机汇编两种方法。 汇编语言是面向机器的,每一类计算机分别有自己的汇编语言。汇编语言占用的内存单元少,执行效率高,广泛应用于工业过程控制与检测等场合。 汇编语言语句格式 标号:操作符操作数;注释 START: MOV A, 30H ;A←(30H) 标号用来标明语句地址,它代表该语句指令机器码的第一个字节的存储单元地址。 标号一般规定由1~8个英文字母或数字组成,但第一个符号必须是英文字母。 注释只是对语句或程序段的含义进行解释说明,以方便程序的编写、阅读和交流,简化软件的维护,一般只在关键处加注释。 伪指令:伪指令只用于汇编语言源程序中,对汇编过程起控制和指导的作用,不生成机器码。汇编结束,自动消失。 汇编语言程序设计步骤

微机原理课后答案

1.2 课后练习题 一、填空题 1.将二进制数1011011.1转换为十六进制数为__5B.8H_____。 2.将十进制数199转换为二进制数为____ 11000111____B。 3.BCD码表示的数,加减时逢__10____进一,ASCII码用来表示数值时,是一种非压缩的BCD 码。 4.十进制数36.875转换成二进制是___100100.111____________。 5.以_微型计算机____为主体,配上系统软件和外设之后,就构成了__微型计算机系统____。6.十进制数98.45转换成二进制为__1100010.0111_B、八进制__142.3463________Q、十六进制__62.7333________H。(精确到小数点后4位) 二、选择题 1.堆栈的工作方式是__B_________。 A)先进先出B)后进先出C)随机读写D)只能读出不能写入 2.八位定点补码整数的范围是____D_________。 A)-128-+128 B)-127-+127 C)-127-+128 D)-128-+127 3.字长为16位的数可表示有符号数的范围是___B___。 A)-32767-+32768 B)-32768-+32767 C)0-65535 D)-32768-+32768 三、简答题 1.微型计算机系统的基本组成? 微型计算机,系统软件,应用软件,输入输出设备 2.简述冯.诺依曼型计算机基本思想? ●将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存 ●指令按其在存储器中存放的顺序执行; ●由控制器控制整个程序和数据的存取以及程序的执行; ●以运算器为核心,所有的执行都经过运算器。 3.什么是微型计算机? 微型计算机由CPU、存储器、输入/输出接口电路和系统总线构成。 4.什么是溢出? 运算结果超出了计算机所能表示的范围。 2.2 一、填空题 1. 8086/8088的基本总线周期由___4____个时钟周期组成,若CPU主频为10MHz,则一个时钟周期的时间为___0.1μs_____。 2. 在8086CPU的时序中,为满足慢速外围芯片的需要,CPU采样___READY_________信号,若未准备好,插入___TW__________时钟周期。 3. 8086系统总线形成时,须要用_____ALE__________信号锁定地址信号。 4. 对于8086微处理器,可屏蔽中断请求输入信号加在_____INTR__________引脚。

微机原理与接口技术实验报告-全实例代码

实验一上机练习 实验目的: 1、掌握用编辑软件编辑程序文本的方法。在DOS环境下,熟练掌握用MASM5.0宏汇编程序对ASM文件进行编译、连接等操作步骤。 2、熟悉用DEBUG调试程序。 实验要求: 选取教科书中一典型例题,用编辑软件在PC机中形成ASM文件,然后编译、连接,生成目标文件和可执行文件。再用DEBUG程序进行调试。 实验步骤: 实验程序如下: data segment ary1 db 12,34,45,56,67,78,89,90,18 cont1 equ $-ary1 ;ary1的长度 sum1 dw ? ary2 db 13h,24h,57h,68h,9ah,0bch,0cdh,0deh,80h,50h cont2 equ $-ary2 sum2 dw ? data ends code segment assume cs:code, ds:data

start: mov ax,data mov ds,ax lea si,ary1 mov cx,cont1 ;设定循环次数为ary1的个数 call sum lea si,ary2 mov cx,cont2 call sum mov ah,4ch ;结束程序功能调用4CH int 21h sum proc ;求和程序段,求该段所有数之和xor ax,ax ;ax清零为下面加法准备 next1: add al,[si] adc ah,0 inc si loop next1 mov [si],ax ret ;返回调用程序 sum endp ;程序段结束 code ends end start

点击“运行”点击“编译成目标文件”,编译成功后,再“运行”=〉“生成可执行文件”,然后运行,即可。 运行成功以后,可进行调试。点击工具栏的调试按钮,出现调试框。其命令如下:输入a,进行逐行汇编,输入c,比较两内存块,输入d,内存信息以16进制显示;输入e,修改内存指定的字节;输入f,可以预置一段内存;输入g,执行程序;输入h,制算术运算;输入i,从指定端口地址输入;输入l,读盘;输入m,内存块传送;输入n,置文件名;输入o,从指定端口地址输出;输入q,结束DEBUG调试;输入r,显示和修改寄存器;输入s,查找字节串;输入t,跟踪执行;输入u,反汇编;输入w,存盘操作。 实验总结: 1、通过实验,熟悉了MASM环境,了解了程序书写,编译和运行的方法。 2、实验过程中,在调试的时候,各调试命令的用法十分复杂,如指令P,单输入p只会执行一步,若要一次执行多步,可以在后面加上数字。通过练习,熟悉了各调试指令。 实验二两个多位十进制数相加 实验目的: 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程。

坐标转换步骤

坐标转换步骤 1、总平图找个已知的点的坐标 2、首先用快捷键 D 调出标注样式 3、把精度调成0.00000000000 测量这个点的角度 4、因为总平图都是倾斜的和正交的情况下有一定的角度 5、把单项的图纸打开 6、全部框选 7、右键旋转 8、输入总平图的角度 9、然后enter 确认 10、从总平图中记录交点的坐标 11、在单项图纸中usc 命令N命定-鼠标左键点击交点,此时此交点已被定 义为0 点 12、输入zbbz 命令点击交点显示坐标为0,0,0 13、再次ucs 命令--- 鼠标左键移动到交点位置(切记不要点击)此时输入 坐标值

再输入X 坐标(坐标值前输入负号)输入标14、输入坐标的方法为先输入Y 坐标(坐标值前输入负号)输入 标 点“,”- 八、、? 点 八、、 ---- 再输入Z 坐标(一般都为0) 15、连续点击两次enter 键,此时此交点已被定义为输入的坐标值 16、再次zbbz 命令此时会显示和从总平图中记录交点的坐标一致 17、大功告成 截图如下 1、打开总平图,总平图找个已知的点的坐标 2、快捷键 D -E Nter--- 如下 3、点击修改,调节右下角精度为最大 4、点击置为当前,点击关闭 5、点击标注角度 6、打开单项图纸如下 7、全部框选- 右键旋转点击交点 8、输入角度

9、enter 确定

再输入X 坐标(坐标值前输入负号)输入标10、ucs 命令输入N 11、enter 确定点击交点 12、输入zbbz 命令 13、e nter 确定 14、再次ucs 命令 15、enter 确定输入坐标 16、鼠标十字丝移动到交点位置(切勿点击)连续 点击两次enter 键 17、输入zbbz 命令 18、e nter 确定 大功告成

算法到程序的转换

算法到程序的转换 用伪代码描述的算法是不能直接在机器上执行的,从算法的伪代码描述到算法的实现,所必须做的事情通常包括如下几个方面。 一常量、结构体、扩充数据类型的说明 比如# define TRUE 1 二添加库函数说明语句 比如# include 三局部变量的添加 比如int i,min; 四语句的转换 将类C中一些不符合C/C++语言的语法,如数据交换及一些为描述算法方便而扩充的其他语句转换成符合语法的语句。 比如a[j] a[j+1]; 转换为: x=a[j]; a[j]=a[j+1]; a[j+1]=x; 五辅助过程或者函数的添加 算法描述只涉及问题的求解部分,通常只对应一个或者多个函数或者过程,而不是完整的可运行的程序。所以除了上述4步之外还需要添加一些数据输入输出及调用函数等。 由此可见,算法描述和算法实现是有一定距离的,因为本课程的关注点主要在算法的描述上,而描述是看不到运行结果的,所以同学们容易感到迷茫。这个问题,我们可以通过验证性实践来强化认识。 下面是验证性实践的步骤: 1 预备知识的学习 验证性实验的目的是验证教材中的数据结构及其应用的算法,实验前有必要了解实验相关的背景,即相关知识点,明确本次实验的内容。 2 源程序阅读和分析 实验前,需要弄清楚下列问题。即: (1)程序结构和程序功能; (2)输入数据有什么?格式是什么? (3)输出是什么?输出数据的意义是什么? (4)设计验证实例为运行程序做准备。 3 调试和测试源程序 (1)编写源程序 (2)编译链接程序 (3)用设计好的实例验证程序 (4)对程序结果进行分析,通过分析运行结果和输入的合理性,理解算法思想与实现,判断算法逻辑上的正误。 4 补充和改进源程序 第一次实验的内容: 单链表验证程序结构。在主程序中实现菜单的选择,所选择的菜单项目包括: (1)创建链表; (2)在第i个位置插入元素;

微机原理习题解答

第一章微型计算机的基础知识 1-1 将下列十进制数转换为二进制数、十六进制数。 (1)110 (2)1 039 (3)0.75 (4)0.156 25 1-2 将下列十进制数转换为BCD 码。 (1)129 (2)5 678 (3)0.984 (4)93.745 1-3 将下列二进制数转换为十进制数、十六进制数。 (1)10101010 (2)10000000 (3)11000011.01 (4)01111110 1-4 将下列十六进制数转换为二进制数、十进制数。 (1)8E6H (2)0A42H (3)7E.C5H (4) 0F19.1DH 1-5 将下列二进制数转换为BCD 码。 (1)1011011.101 (2)1010110.001 1-6 将下列BCD 码转换为二进制数。 (1)(0010 0111 0011) BCD (2)(1001 0111.0010 0101) BCD 1-7 完成下列二进制数的运算。 (1)1001.11+11.11 (2)1101.01-0110.11 (3)1000.011-1001.101 (4)1111+1101 1-8 完成下列十六进制数的运算。 (1)6AH+0A6H (2)0AB1FH+0EFCH (3)12ADH-1DEH (4)117H-0ABH 1-9 已知X=01H,Y=0FFH ,在下面的情况下比较两数的大小。 (1)无符号数 (2)符号数 (均为补码) 1-10 计算下列各表达式。 (1)101+‘A’+01101001B+0D5H+57Q (2)127.8125+10111101.101+375.63Q+1FC.8AH 1-11 写出下列字符串的ASCII 码。 (1)HELLO (2)A8=

相关文档
最新文档