汇编十六进制数与十进制数之间的转换

  • 格式:docx
  • 大小:289.84 KB
  • 文档页数:17

1

1

北华航天工业学院

课程设计报告(论文)

设计课题:代码转换

(十六进制数向十进制数之间的转换)

专业班级:电子信息工程

学生姓名:

指导教师:

设计时间: 2010年12月19日

北华航天工业学院电子工程系

微机原理课程设计任务书

姓 名: 专 业: 电子信息工程 班 级:

指导教师: 职 称:

课程设计题目:

代码转换(十六进制数向十进制数之间的转换)

已知技术参数和设计要求:

1. 编程实现十六进制数向十进制数之间的转换。

2. 学习数值和数值的相互转换方法。

3. 按屏幕提示要求输入,从屏幕上获得正确结果。

4. 实现循环运行。

所需仪器设备:

计算机

成果验收形式:

1. 笔试 2. 屏幕显示 3. 设计报告

参考文献:

微机原理与接口技术

8086实验指导书

时间

安排 第十六周:

编辑程序 进行调试

第十七周:

验收

指导教师: 教研室主任:

年月日 目 录

内 容 摘 要 „„„„„„„„„„„„„„„„„„„ 1

一.课设概述„„„„„„„„„„„„„„„„„„„ 2

1.设计内容 „„„„„„„„„„„„„„„„„„„ 2

2.实验要求 „„„„„„„„„„„„„„„„„„„ 2

3.实验目的 „„„„„„„„„„„„„„„„„„„ 2

二.设计环境 „„„„„„„„„„„„„„„„„„„ 2

1.Masm for window集成实验环境介绍„„„„„„„ 2

2.DOS系统功能调用„„„„„„„„„„„„„„„„2

3.汇编语言的上机过程 „„„„„„„„„„„„„„„3

三.设计方案„„„„„„„„„„„„„„„„„„„ 4

1.设计思想 „„„„„„„„„„„„„„„„„„„ 4

2.设计方案 „„„„„„„„„„„„„„„„„„„ 4

四.总原理图 „„„„„„„„„„„„„„„„„„„ 6

五.程序清单 „„„„„„„„„„„„„„„„„„„ 6

1.方法一 „„„„„„„„„„„„„„„„„„„ 6

2.方法二 „„„„„„„„„„„„„„„„„„„ 9

六.运行结果„„„„„„„„„„„„„„„„„„ 12

七.实验体会 „„„„„„„„„„„„„„„„„„„ 12

八.参考文献 „„„„„„„„„„„„„„„„„„„ 13 1 内容摘要

汇编语言是一种面向计算机的程序设计语言,和机器语言相比,汇编语言编写程序可以用助记符来表示指令的操作码和操作数,也可以用标号来替代地址,常量和变量,还引入了新的汇编指令——伪指令和宏指令。

高级程序设计语言使用了更接近人们的自然语言和习惯的教学语言来描述具体的算法,使编写的程序更加直观和简练。高级语言通常都包含有各种函数计算,字符串处理,数据I/O等功能。高级语言通常是独立于具体机器的,程序员可不必了解机器的指令系统和内部的具体结构,可以把精力集中在正确掌握语言的语法桂策和程序运算上。编写的程序容易被阅读和修改。

此次课设内容以微软公司的宏汇编MASM为背景,主要学习汇编的语法规则,同时应用一些磁盘操作系统的功能调用和基本输入输出系统的中断调用。

DOS是用户和微型计算机之间的接口,用户依靠DOS来管理微型计算机。DOS向用户提供了许多命令及系统功能,用户可以在DOS提示符下键入命令来实现对计算机的操作。课设中多次用到DOS指令。

索引关键词:汇编语言伪指令宏指令 DOS中断

一.课设概述

2 1.设计内容:

编程实现十六进制数向十进制数之间的转换。

2.实验要求:

编程实现十六进制数向十进制数之间的转换。

3.实验目的:

学习数值和数值的相互转换方法,并熟练掌握汇编语言语法的使用,DOS系统功能调用,并学习循环结构的设计。

二.设计环境

1.Masm for window集成实验环境介绍

Masm for Windows 集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言的学习软件,它具有错误信息自动定位、关键字实时帮助(动画演示汇编指令执行过程)、语法着色、无限的撤消与恢复、WORD式的查找、替换、定位、支持中文长文件名、软件可以安装在任意文件夹等功能。

2.DOS系统功能调用

使用DOS提供的程序控制硬件。优点是兼容性好,使用方便。

DOS是IBM PC系列微机的操作系统(现在的微机仍能运行DOS,而且新的操作系统也能继续提供几乎所有的DOS功能调用)负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。DOS的功能调用不依赖于具体的硬件系统。

所有的DOS系统功能调用都是利用软件中断指令INT 21H来实现的。也就是说,在程序中需要调用DOS功能的时候,只要使用一条INT 21H指令即可。INT 21H是一个具有90多个子功能的中断服务程序,这些子功能大致可以分为 3 四类:设备管理、目录管理、文件管理和其他。其功能一览表可参见附录。为了方便用户使用这些子功能,INT 21H对每一个子功能都进行了编号——称为功能号。这样,用户就能通过指定功能号来调用INT 21H的不同子功能。

DOS系统功能调用的方法如下:

(1)AH->功能号。

(2)在其他寄存器中放入该功能所要求的人口参数。

(3)在执行INT 21H指令。

(4)分析出口参数。

3.汇编语言的上机过程

源文件的建立和汇编:

(1)建立源程序文件 规定源程序文件的扩展名为.ASM

(2)汇编源程序文件

检查源程序中的语法错误并给出出错信息

产生目标文件(OBJ文件),列表文件(LST文件)

和对应文件(CRF文件)

展开宏指令

目标文件的链接:

(1)找到要连接的所有目标文件

(2)确定所有段地址的地址值

(3)确定所有浮动地址和外部符号所对应的存储地址

(4)生成.EXE可执行文件

执行文件的调用

三.设计方案 4 1.设计思想

在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。这些数制和编码根据其作用的不同,在存储形式上也有差异。在实际应用中,它们也因使用的要求不同而有所差异。在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。还有些代码转换需要根据使用要求通过编程完成。因此,代码转换是非数据处理中最常见的情况。

十六进制向十进制的转换分成两个大的步骤。

一是从十六进制向二进制的转换,由于十六进制和二进制的特殊关系,它们之间的转换非常简单。

二是从二进制转换为十进制,相对而言,这种转换复杂一些。所以该模块的核心是实现二进制数向十进制数的转换。方法是将要转换的二进制数预先放到AX寄存器中,判断AX中数的符号,若为负数,则将负号送入输出缓冲区,并求AX的绝对值;若AX中的数为正数,则不做其他处理,此时AX中即为无符号二进制数。然后将无符号二进制数转换成十进制数,可采用将AX除以 10,得到第一个商和第一个余数,第一个余数就是所求十进制数的个位:将第一个商除以10,得到第二个商和余数,第二个余数就是所求十进制数的十位数,重复以上过程,一直循环到商为0时,得到的余数就是所求十进制数的最高位数。这就是数制转换中常用的“除模留余倒排列”法则。

2.设计方案

(1)实现十六进制数向二进制数的转换

第一步:实现十六进制数的输入和对应二进制数的转换。利用DOS系统功能中的1号输入字符的功能,接收输入的十六进制数,将其转换成对应的二进制数(若是0-9之间的数直接屏蔽高4位,若是A-F之间的书在屏蔽高4位后还要加9)。BX中存放的是二进制数的结果,利用算数左移指令讲BX左移4位,然后与下一次转换后的数相加。如此循环4次,得到对应的二进制数。 5 第二步:实现显示转化后的二进制数。利用ROL和RCL指令,从最高为起循环取出每位二进制数,将其转换成对应的ASSCII码,调用DOS系统功能调用中2号功能显示。

(2)实现二进制数向十六进制数的转换。

用循环左移指令ROL每次移动4位,取出移到最低的4位,利用十六进制数所对应的ASSCII码比其本身大30H(0-9)或37H(A-Z)的关系,将低4位转换成所对应的ASSCII码,在调用DOS系统功能2号(显示字符)功能,将转换后的字符显示出来,如此循环四次。

(3)本程序的难点是如何把二进制转化为十进制,并将其输出。

我们采用了除以10,把取余数保存的方法,现在以十进制数132为例,采用除以10并取余的方法,主要是因为不知道有二进制转化的真值所构成的十进制数有几位。

132/10=13„„..2 保存2,又因为13!=0,所以继续运算

13/10=1„„„..3 保存3,又因为1!=0,所以继续运算

1/10=0„„„„1 保存1,0==0,所以结束此运算

如下图所示:

经过相关处理,把保存的数据变成0-9的ASSCII码。所以保存的数据为:

在经过转置,把倒序的结果顺序化,得到结果:

这样就解决了二进制转化为十进制数的算法。

四.总原理图

“2” “3” “1”

“1” “3” “2”

开始

显示菜单信息