版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言程序设计大作业报告汇编语言程序设计综合程序设计实验报告 题 目: 数制转换器 班 级: 信1101-2班 姓 名: 王兵茹 李夏蕾 胡佳奇 学 号: 20112917 20112912 20113013 完成日期: 2013-11-24 目录一、简介二、小组成员及具体分工三、需求分析与设计四、代码及分析五、总结一、简介本设计利用汇编语言来实现数制转换设计,用于方便进制之间的互换。设计的内容可以使十六进制、八进制、二进制、十进制的数制互相转换。二小组成员及具体分工小组成员:王兵茹 李夏蕾 胡佳奇具体分工: 我们三个一开始是各自的分工查资料,先看看单个数制转换,王兵茹负责的是十六进制,李夏
2、蕾负责的是十进制,胡佳琪负责的是二进制。 最后我们几个一起完成了程序的主要设计,由于大体思路相同,最后加上了八进制的转换。 在程序的修改方面,王兵茹进行了后期的加工,增加了dios中断,把单调的退出改成文本形式下的退出,在退出之前,执行清屏。 最后我们几个商量着完成了实验报告和ppt的制作,经过我们几个人的努力,虽然做的不是特别好,但还是各有收获。三、需求分析与设计需求分析通过编程实现显示菜单,然后通过键盘输入菜单相应的选项进入相应的数制转换,然后通过选项对应的子程序跳转来实现转换,子程序中通过宏定义定义数制前后的数制,并且在宏定义过程中实现数制转换算法,最后输出转换后的进制数 。 设计 运行
3、的设计框图 Debug运行的显示的数值转换的菜单八进制转换为二进制二进制转换为十六进制二进制转换为十进制二进制转换为八进制十进制转换为二进制八进制转换为十六进制八进制转换为十进制十进制转换为八进制十进制转换为十六进制十六进制转换为十进制十六进制转换为二进制十六进制转换为八进制 整个系统的设计框图选择菜单 输入选择输入转换的进制数子程序调用输出转换后的数据循环操作退出退出时,加了一个文本界面,用到dios中断,int 10h 子程序之间调用关系框图我们的这个程序主要就是用到的子程序的调用和大量的宏定义,对于输入时的宏定义有charin,strin,numin,输出时的宏定义有charout,st
4、rout,numout,输出的时候用到的是栈push和pop,在压栈push时,用到了irp不定重复伪操作。定义通用inax宏,确定转换之前的进制,例如inax cx、cx=2是把转换之前的进制确定为2存到cx中定义通用outax宏,确定转换之后的进制,例如outax bx、bx=2是把转换之后的进制确定为2存到bx中通用宏charin逐个输入转换之前进制字符输入的具体框图如下:通用宏inax,来确定转换之前的进制charin宏来逐个输入转换之前的字符回车(来确定输入完成)判断输入的字符al=?判断输入的字符al=?判断输入的字符al=?将字符的ASCII码转换成数值送到ax中ax=?axax
5、*cxax出栈ax=0!=0<009>9<AAAZ>F<a or >zaz 输出的具体框图如下通用宏outax,确定转换之后的进制判断第一步的ax为多少判断之前保存的余数ax/bxal商dx余数把dx压入堆栈保存,保存之后清空dxcxcx+1用来记录余数个数把它的ASCII码加上55得到相应的字符逐个输出继续执行直到ax为0不为0输出后返回上一步处理下一个余数直到堆栈中没有余数>10<10直接输出四、代码及分析程序运行源代码如下:;*data segment space db 1000 dup(' ')str1 db 10 dup
6、(' '),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 i
7、nt 10h mov dx,0 ;光标在左上角 mov ah,2 int 10h ;调用biosENDMmenu 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.oc
8、tal 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 t
9、o binary 2 *' db10,13,'* k.hexadecimal 16 to octal 8 *' db10,13,'* l.hexadecimal 16 to decimal 10 *'db10,13,'* m.exit *'db10,13,'*',10,13,'$'*;2进制转换为16进制和10进制和8进制str2db10,13,'please input the binary string:',10,13, '$'str21db'the hexade
10、cimal string is:',10,13, '$'str22db'the decimal string is:',10,13, '$'str23db'the octal string is:',10,13, '$'16进制转换为2进制和8进制和10进制str3db10,13,'please input the hexadecimal string:',10,13, '$'str31db'the binary string is:',10,13, '
11、;$'str32db'the octal string is:',10,13, '$'str33db'the decimal string is:',10,13, '$'10进制转换为2进制和8进制和16进制str4db10,13,'please input the decimal string:',10,13, '$'str41db'the binary string is:',10,13, '$'str42db'the octal string i
12、s:',10,13, '$'str43db'the hexadecimal string is:',10,13, '$'8进制转换为2进制和10进制和16进制str5db10,13,'please input the octal string:',10,13, '$'str51db'the binary string is:',10,13, '$'str52db'the decimal string is:',10,13, '$'str53db
13、'the hexadecimal string is:',10,13, '$'str0 db 10,13,'ERROR! please input am:',13,10,'$'在数据段定义字符,数字,字符串的输入输出的宏定义;*charin macro;字符输入mov ah,01hint 21hendm;*numin macro ;数字输入charin ;调用charin宏定义sub al,48 ;48d=30h,将字符转换为数字endm;*strin macro stringin;字符串输入lea dx,stringinmov
14、ah,0ahint 21hendm;*charoutmacro outchar ;字符输出 irp rec,<ax,dx>不定重复伪操作 push rec endm;push ax;push dxmov dl, outcharmov ah, 02hint 21hpop dxpop axendm;*numoutmacro outnum ;数字输出push axpush dxmov dl, outnumadd dl, 48mov ah, 02hint 21hpop dxpop axendm;*stroutmacro stringout;字符串输出push axpush dxlea dx
15、, stringoutmov ah, 9int 21hpopdxpopaxendmdataendsstack segment stackdw 200 dup(?)stack ends;*code segmentassume cs:code,ds:data,es:data,ss:stack;*endl macro irp x,<ax,bx,cx,dx>不定重复伪操作 push x endm;push ax;push bx;push cx;push dxmov dl, 0ah;回车换行mov ah, 2int 21hmov dl, 0dhint 21hpop dxpop cxpop b
16、xpop axendm;*outaxmacrobasenumpush axpush bxpush cxpush dxmov bx, basenumcall outaxppop dxpop cxpop bxpop axendm;*outaxpprocmov dx,0mov cx,0outaxp_circle:cmp ax,0je outaxp_nextdiv bxpush dxmov dx,0inc cxjmp outaxp_circleoutaxp_next:pop axcmp al,10jb noutadd al,55 ;55d=37hcharout aljmp coutnout:numou
17、t alcout:loop outaxp_nextretoutaxpendp;*inax macro basenumpush bxpush cxpush dxmov cx, basenumcall inaxppop dxpop cxpop bxendm;*inaxpprocmovax,0inaxp0:push axinaxp1:charincmp al, 13 ;判断输入的是不是回车jeinaxecmp al, '0'jbinaxp1cmp al, '9'jainaxnext1subal, 48jmp inaxnuminaxnext1:cmp al, '
18、A'jbinaxp1cmp al, 'F'jainaxnext2subal, 55jmp inaxnuminaxnext2:cmp al, 'a'jbinaxp1cmp al, 'z'jainaxp1subal, 87jmp inaxnuminaxnum:mov bh, 0mov bl, alpopaxcmp ax, 0jeinaxaddmul cxinaxadd:add ax, bxjmp inaxp0inaxe:popaxretinaxp endp;*start: mov ax,datamov ds,axmov es,ax lea b
19、p,space mov dx,0b00h mov cx,1000 mov bx,0020h mov ax,1300h int 10h lea bp,str1;显示welcome mov dx,0600h mov cx,120 mov bx,000eh mov ax,1301h int 10h display: strout menucharincmp al,'a'je bin2_oct8jl errcmp al,'b'je bin2_dec10cmp al,'c'je bin2_hex16cmp al,'d'je oct8_bin
20、2cmp al,'e'je oct8_dec10cmp al,'f'je oct8_hex16cmp al,'g'je dec10_bin2cmp al,'h'je dec10_oct8cmp al,'i'je dec10_hex16cmp al,'j'je hex16_bin2cmp al,'k'je hex16_oct8cmp al,'l'je hex16_dec10cmp al,'m'je exitcmp al,'n'jnl er
21、rclear_screen jmpdisplayerr: strout str0 jmp display;*bin2_hex16: ;二进制转换strout str2inax 2endlstrout str21outax 16jmp displaybin2_dec10:strout str2inax 2endlstrout str22outax 10jmp displaybin2_oct8:strout str2inax 2endlstrout str23outax 8jmp display;*hex16_bin2: ;十六进制转换strout str3inax 16endlstrout st
22、r31outax 2jmp displayhex16_oct8:strout str3inax 16endlstrout str32outax 8jmp displayhex16_dec10:strout str3inax 16endlstrout str33outax 10jmpdisplay;*dec10_bin2: ;十进制转换strout str4inax 10endlstrout str41outax 2jmp displaydec10_oct8:strout str4inax 10endlstrout str42outax 8jmp displaydec10_hex16:strout str4inax 10endlstrout str43outax 16jmp display;*oct8_bin2: ;八进制转换strout str4inax 8endlstrout str41outax 2jmp displayoct8_dec10:strout str4inax 8endlstrout str42outax 10jmp displayoct8_hex16:strout str4inax
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道交叉穿越施工
- 销售服务质量提升与客户满意度方案
- 管道闭水试验施工
- 甘肃省2025-2026学年中考化学模拟试题(含答案解析)
- 2026年广东交通职业技术学院单招职业倾向性测试题库及答案详解(全优)
- 2026年广东水利电力职业技术学院单招职业技能测试题库及1套参考答案详解
- 2026年广州铁路职业技术学院单招职业倾向性考试题库带答案详解ab卷
- 2026年平顶山工业职业技术学院单招职业倾向性测试题库带答案详解(b卷)
- 2026年广州体育职业技术学院单招综合素质考试题库带答案详解(培优b卷)
- 2026年岳阳职业技术学院单招职业技能考试题库带答案详解(考试直接用)
- 团播合作协议合同
- 2026年黑龙江农业工程职业学院单招职业倾向性测试题库附答案详解
- 派出所改造工程施工技术组织设计
- 医学心理学虚拟案例库建设
- 纯化水监测管理制度
- 流行性腮腺炎课件及卷子
- 家畜普通病学课件
- 雨课堂学堂云在线《身边的营养学》单元测试考核答案
- 2025年六枝特区考调试题及答案
- 2026年苏州工业职业技术学院单招职业技能测试必刷测试卷附答案
- 液化气站安全隐患排查整改台账
评论
0/150
提交评论