版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 课 程 设 计 说 明 书实验名称:汇编语言实现四则运算 指导教师: 院 系: 信息科学与工程学院 学生姓名: 学 号: 专业班级: 计算机网络技术 2011年05月29日目录一课程设计的目的二总体设计思想.1三各算法流程图.3 四、源代码.6五、程序执行结果.19.设计总结.20 设计目的一设计目的 通过本课程设计所要达到的目得是:1.培养理论联系实际的设计思想,提高综合运用汇编语言课程的理论分析问题.解决问题的能力。2.通过查找运用设计资料,完成必须的基本训练。3.通过本课程设计加深对计算机系统内部的了解,为以后的学习打好基础。设计思想二设计思想2.1 存储结构(1)根据提示信息从键盘上
2、输入第一个、第二个十进制数。将这两个数分别存放在digit1、digit2 中。(2)对这两个数分别做加、减、乘、除。所得结果分别存放在result_add、result_sub、result_mul、result_div1、result_div2。2.2 设计方法(1)从键盘上输入两个十进制数(2)将这两个十进制数分别转化成二进制数。(3)对二进制数分别进行加、减、乘、除运算。(4)对于减、除运算要比较两个数的大小。(5)将所得的结果在转化成十进制输出。各算法流程图做减法运算做加法运算输入两个数开始做乘法运算做除法运算输出结果 结束图1、主流程结束输出结果做加法运算输入两个数开始图2、加法流
3、程做减法运算输出结果结束小于大于比较被减数于减数的大小输入两个数输入两个数输入两个数输入两个数开始符号位和值分开处理图3、减法流程结束输入结果做乘法运算输入两个数开始 图4、乘法流程符号位和值分开处理小于大于输入两个数比较被除数于除数的大小做除法运算输入结果结束开始 图5、除法流程源代码.model small.stack.data user_string db 11,?,11 dup(0) ;键盘缓冲区,存放键入的十进制ascii码 digit1 dw 0,0,0,0,$ ;输入的第一个十进制数 digit2 dw 0,0,0,0,$ ;输入的第二个十进制数 result_add dw 0,
4、0,0,0,$ ;两个十进制数的和 result_sub dw 0,0,0,0,$ ;两个十进制数的差 result_mul dw 0,0,0,0,0,0,$ ;两个十进制数的积 result_div1 dw 0,0,0,0,0,0,$ ;两个十进制数的商 result_div2 dw 0,0,0,0,0,0,$ ;两个十进制数的商的余数 result_str db 24 dup(0),$ ;暂时存放要输出的十进制数的ascii码 mulfact dw 10 ;乘数因子 flag dw 3 ;标志 temp_dx dw 0,0,0,0 string_l db 0ah,0dh,digit1 di
5、git2,$ string_e db 0ah,0dh,digit1 = digit2,shang 1 yu 0.,$ string_crlf db 0ah,0dh,$ string_digit1 db 0ah,0dh,the first digit is:,$ string_digit2 db 0ah,0dh,the second digit is:,$ string_he db 0ah,0dh, he shi :,$ string_cha db 0ah,0dh, cha shi :,$ string_mul db 0ah,0dh,ji shi :,$ string_div db 0ah,0d
6、h, shang shi(the first is shang,the second is yushu):,$.code ;*main proc far ;主过程start: mov ax,data mov ds,ax ;* mov dx,offset string_digit1 ;输入第一个十进制数 call displaystring mov dx,offset user_string call read_keys call crlf mov di,offset user_string mov bx,offset digit1 ;将第一个十进制数存入digit1 call asc_dec
7、;* mov dx,offset string_digit2 ;输入第二个十进制数 call displaystring mov dx,offset user_string call read_keys call crlf mov di,offset user_string mov bx,offset digit2 ;将第二个十进制数存入digit2 call asc_dec ;* mov dx,offset string_he ;将两个数求和,并将结果存入 call displaystring ; result_add call option_add mov bx,offset result
8、_add mov di,offset result_str+23 call dec_asc ;把result_add数组转为ascii码输出;* mov dx,offset string_cha ;将两个数相减 call displaystring ; 结果存入result_sub call option_sub mov bx,offset result_sub mov di,offset result_str+23 call dec_asc ;将result_sub转为ascii码并输出;* mov dx,offset string_mul ;把两个数的积存入string_mul call
9、displaystring call option_mul mov bx,offset result_mul mov di,offset result_str+23 call dec_asc ;将string_mul转为ascii并输出 ;* mov dx,offset string_div ;两个数相除 call displaystring call option_div ;* mov ax,4c00h int 21h ;退出程序 main endp ;*option_add proc near ; 求两个数的和 mov ax,digit1 mov dx,digit1+2 mov cx,di
10、git1+4 add ax,digit2 adc dx,digit2+2 adc cx,digit2+4 adc result_add+6,0 mov result_add,ax mov result_add+2,dx mov result_add+4,cx ret option_add endp ;*option_cmp proc near ;比较两个数的大小 mov si,6 cmpnext: mov ax,digit1si cmp ax,digit2si jb b ja a cmp si,0 je o dec si dec si jmp cmpnext b: mov dl,- jmp c
11、mpexit a: mov dl,+ jmp cmpexit o: mov dl,0 cmpexit: ret option_cmp endp ;*option_sub proc near ;差的符号和值分别处理, call option_cmp ;通过option_cmp子过程 mov ah,02h ;判断符号,通过大数减 int 21h ;去小数得到差的绝对值 cmp dl,0 ;符号和绝对值分开输出 je osexit cmp dl,- jne f1 mov bx,offset digit2 mov di,offset digit1 jmp f2 f1: mov bx,offset di
12、git1 mov di,offset digit2 f2: clc pushf mov si,0 mov cx,3 subnext: mov ax,bx+si popf push bx mov bx,di sbb ax,bx+si pop bx pushf mov result_subsi,ax inc si inc si loop subnext popf osexit: ret option_sub endp ;*option_mul proc mov dx,0 mov ax,digit1 ;取被乘数低16位 mul digit2 ;被乘数低16位*乘数低16位 mov result_mu
13、l,ax ;保存相乘结果 mov result_mul+2,dx mov ax,digit1+2 ;去被乘数高16位 mov dx,0 mul digit2 ;被乘数高16位*乘数低16位 add result_mul+2,ax adc result_mul+4,dx mov ax,digit1 ;取被乘数低16位 mov dx,0 mul digit2+2 ;被乘数低16位*乘数高16位 add result_mul+2,ax ;中间结果相加 adc result_mul+4,dx pushf ;暂存标志寄存器 mov ax,digit1+2 mov dx,0 mul digit2+2 ;被
14、乘数高16位*乘数高16位 add result_mul+4,ax ;中间结果相加 adc result_mul+6,dx popf ;取标志寄存器 mov dx,0 adc result_mul+6,dx ret option_mul endp ;*option_div proc near ;通过option_cmp 判断被除数是否 call option_cmp ;大于除数,相等,小于,大于分开 cmp dl,0 ;处理 je e cmp dl,- je ol call div_1 call crlf mov bx,offset result_div1 mov di,offset resu
15、lt_str+23 call dec_asc call crlf mov bx,offset digit1 mov di,offset result_str+23 call dec_asc jmp odexit e: mov dx,offset string_e jmp dis ol: mov dx,offset string_l dis: call displaystring odexit: ret option_div endp ;*div_1 proc near ; 该子过程处理被除数大于 mov ax,0 ; 除数的情况 mov dx,0 ;将两个数相除,并将结果商和 mov cx,0
16、 mov si,0dodnext: ; 余数分别存入 相应的数组 push dx push ax push si push cx call option_cmp pop cx pop si pop ax cmp dl,+ je d1 cmp dl,0 je d2 pop dx jmp div1exit d2: pop dx add ax,1 adc dx,0 adc cx,0 adc si,0 jmp div1exitd1: pop dx clc mov bx,digit1 sbb bx,digit2 mov digit1,bx mov bx,digit1+2 sbb bx,digit2+2
17、mov digit1+2,bx mov bx,digit1+4 sbb bx,digit2+4 mov digit1+4,bx mov bx,digit1+6 sbb bx,digit2+6 mov digit1+6,bx add ax,1 adc dx,0 adc cx,0 adc si,0 jmp dodnextdiv1exit: mov result_div1,ax mov result_div1+2,dx mov result_div1+4,cx mov result_div1+6,si ret div_1 endp ;*asc_dec proc near ;将ascii码表示的十转为
18、二进制表示的十进制数 inc di mov cx,0 mov cl,di a_decnext: inc di mov ax,0 mov al,di sub al,030h call mul_10 call add_char loop a_decnext aexit: ret asc_dec endp ;*add_char proc near ;将一个数字加入到内存十进制数中 add bx,ax pushf mov ax,0h popf adc bx+2,ax adc bx+4,ax ret add_char endp ;*(入口:bx)* mul_10 proc near ;将内存中一个十进制
19、数乘10(10个字节大小) push dx ;bx中放有十进制数的偏移地址 push ax push cx mov cx,4 mov si,0 mnext: mov dx,0h mov ax,bx+si mul mulfact mov bx+si,ax mov temp_dxsi,dx inc si inc si loop mnext clc mov dx,0 mov ax,temp_dx adc bx+2,ax adc bx+4,dx adc bx+6,dx adc bx+8,dx mov ax,temp_dx+2 add bx+4,ax adc bx+6,dx adc bx+8,dx mo
20、v ax,temp_dx+4 add bx+6,ax adc bx+8,dx mov ax,temp_dx+6 add bx+8,ax pop cx pop ax pop dx ret mul_10 endp ;*dec_asc proc near ;将二进制表示的十进制数转化为十进制ascii码 mov flag,3 ;bx和di为入口寄存器c00: mov dx,0 mov ax,0 mov ax,2 mul flag l: mov si,ax c4: mov dx,0 mov ax,bx+si cmp ax,0 je c9 mov cx,flag inc cx next: mov ax,bx+si div
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咖色欧美商务商业计划书模板
- 安钢总医院2026年成熟型人才招聘备考题库附答案详解
- 2型糖尿病早期β细胞功能保护策略
- 2025年江苏经贸职业技术学院公开招聘工作人员26人备考题库(第二批)含答案详解
- 2025年关于招聘急需专业兼职教师的备考题库及参考答案详解
- 基于区域协同的人工智能教育质量评价体系与教育评价标准体系研究教学研究课题报告
- 攀枝花市兴东投资建设集团有限责任公司关于2025年公开招聘工作人员的备考题库及答案详解参考
- 初中生物教师教学画像与数字化教育资源精准投放的实践探索教学研究课题报告
- 2025年郑州市第十五人民医院人员招聘备考题库参考答案详解
- 2025年新疆额河矿业有限责任公司公开招聘备考题库及答案详解1套
- 【MOOC】新媒体文化十二讲-暨南大学 中国大学慕课MOOC答案
- 2024年初中七年级英语上册单元写作范文(新人教版)
- 创新思维训练智慧树知到期末考试答案章节答案2024年江西理工大学
- 神经介入进修汇报
- 塑胶件的24种常见不良缺陷图片
- A3.7混凝土拆模申请表
- 电力行业云计算平台规划设计
- GRR表格MSA第四版(手册例)
- 人工湿地水质净化施工组织设计
- GB/T 21709.22-2013针灸技术操作规范第22部分:刮痧
- GB/T 13245-1991含碳耐火材料化学分析方法燃烧重量法测定总碳量
评论
0/150
提交评论