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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汇编语言程序设计》

综合程序设计实验报告

题目:数制转换器

班级:信1101-2班

姓名:王兵茹李夏蕾

胡佳奇

学号:******** ********

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逐个输入转换之前进制字符

四、代码及分析

程序运行源代码如下:

;******************************************************************** *****************

data segment

space db 1000 dup(' ')

str1 db 10 dup(' '),9 dup(' '),'Welcome to shuzhizhuanhuan',52 dup(' ')

str12 db 240 dup (' '),9 dup(' '),'Thank you',412 dup(' ')

clear_screen MACRO ;清屏宏定义

mov ah,06h

mov al,0

mov bh,0f0h ;白底黑字

mov ch,0 ;从0行0列到23行79列清屏

mov cl,0

mov dh,23

mov dl,79

int 10h

mov dx,0 ;光标在左上角

mov ah,2

int 10h ;调用bios

ENDM

menu db 10,13,'*************************************************' db10,13,'*************************************************'

db10,13,'* please choice action: *'

db10,13,'* a.binary 2 to octal 8 *'

db10,13,'* b.binary 2 to decimal 10 *'

db10,13,'* c.binary 2 to hexadecimal 16 *'

db10,13,'* d.octal 8 to binary 2 *'

db10,13,'* e.octal 8 to decimal 10 *'

db10,13,'* f.octal 8 to hexadecimal 16 *'

db10,13,'* g.decimal 10 to binary 2 *'

db10,13,'* h.decimal 10 to octal 8 *'

db10,13,'* i.decimal 10 to hexadecimal 16 *'

db10,13,'* j.hexadecimal 16 to binary 2 *'

db10,13,'* k.hexadecimal 16 to octal 8 *'

db10,13,'* l.hexadecimal 16 to decimal 10 *'

db10,13,'* m.exit *'

db

10,13,'*************************************************',10,13,' $'

;**************************************************************

;2进制转换为16进制和10进制和8进制

str2 db10,13,'please input the binary string:',10,13, '$'

str21 db'the hexadecimal string is:',10,13, '$'

str22 db'the decimal string is:',10,13, '$'

str23 db'the octal string is:',10,13, '$'

;16进制转换为2进制和8进制和10进制

str3 db10,13,'please input the hexadecimal string:',10,13, '$' str31 db'the binary string is:',10,13, '$'

str32 db'the octal string is:',10,13, '$'

str33 db'the decimal string is:',10,13, '$'

;10进制转换为2进制和8进制和16进制

str4 db10,13,'please input the decimal string:',10,13, '$'

str41 db'the binary string is:',10,13, '$'

str42 db'the octal string is:',10,13, '$'

str43 db'the hexadecimal string is:',10,13, '$'

;8进制转换为2进制和10进制和16进制

str5 db10,13,'please input the octal string:',10,13, '$'

str51 db'the binary string is:',10,13, '$'

str52 db'the decimal string is:',10,13, '$'

str53 db'the hexadecimal string is:',10,13, '$'

str0 db 10,13,'ERROR! please input a~m:',13,10,'$'

;在数据段定义字符,数字,字符串的输入输出的宏定义

;*************************************************

charin macro ;字符输入

mov ah,01h

int 21h

endm

;************************************************

numin macro ;数字输入

charin ;调用charin宏定义

sub al,48 ;48d=30h,将字符转换为数字

endm

;****************************************************

strin macro stringin ;字符串输入

lea dx,stringin

mov ah,0ah

int 21h

endm

;****************************************************

charout macro outchar ;字符输出

相关文档
最新文档