ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:33.89KB ,
资源ID:23645126      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23645126.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编课程设计 四位无符号十进制数乘法程序概要.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编课程设计 四位无符号十进制数乘法程序概要.docx

1、汇编课程设计 四位无符号十进制数乘法程序概要华 北 科 技 学 院课程设计说明书课程名称:汇编语言班级 : 计算机 B08-1 姓名 : _王松 _ 学号:_ 200807014101 _ 设计题目 :_编写两个四位无符号十进制数乘法程序 设计时间 : 2010/6/21 至 2010/7/2 指导教师 :李冬艳评 语 :_ _ _ _ _ 评阅成绩 评阅教师 :一、课程设计目的进行程序设计方法和技能的基本训练, 巩固在课堂上学到的有关程序设计 的基本知识和基本方法, 通过实际动手能力的培养, 进一步熟悉汇编语言的结构 和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。 二、

2、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。2.遵循模块化、结构化的程序设计方法。3. 要求程序必须正确。4. 程序简明易懂,多运用输入输出提示,出错信息及必要的注释。5. 要求程序结构合理,语句使用得当。6. 适当追求编程技巧和程序运行效率。三、课程设计题目 :编写两个四位无符号十进制数乘法程序四、课题分析由于题目要求从外设输入输出数据, 而在内存中用二进制数形式实现乘法, 所以涉及到代码转换问题。步骤如下:从键盘输入两个十进制乘数(ASCII 码 分别转换成二进制形式二进制数乘把二进制乘积转换成十进制数的 ASCII 码形式输出到屏幕。五、流程图: 六、程序源代

3、码:Code SegmentAssume CS:Code,DS:CodeCR equ 000DHLF equ 000AHKBBack equ 0008H; -; 功能:显示指定地址(Str_Addr的字符串; 入口:; Str_Addr=字符串地址(要求在数据段Output MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; -; 功能:输出回车换行Output_CTLF proc Nearpush axpush dx mov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axretOutpu

4、t_CTLF endp; -; 功能:取光标位置; 入口:无; 出口:DH=行号, DL=列号GetCursor Proc NearPUSH AXPUSH BXPUSH CXXOR BX,BXMOV AH,3INT 10HMOV Cursor_Row,DHMOV Cursor_Col,DLPOP CXPOP BXPOP AXRETCursor_Row DB ?Cursor_Col DB ?GetCursor EndP; -; 功能:置光标位置; 入口:Cursor_Row=行坐标 ; Cursor_Col: 列坐标 SetCursor Proc NearPUSH CXPUSH BXPUSH A

5、XMOV DH,Cursor_RowMOV DL,Cursor_ColXOR BX,BXMOV AH,2INT 10HPOP AXPOP BXPOP CXRETSetCursor EndP; -; 功能:键盘输入一个 N 位的十进制数字,将其转换成二进制数并保存在指定的 内存单元。; 入口:N=数字位数; di=保存输入的数字首地址; 出口:转换后的二进制数保存在 di 所指的单元Input_Digit Proc Nearpush dxpush cxpush bxpush dilea di,Save_Tmppush dicldmov cx,Npush cxInput: call GetCurs

6、or ; 取光标位置mov ah,1 ; 从键盘接受一个字符int 21hcmp al,CR ; 若键入的是回车,已经键入的数字不足 N 位jz ASC_Dec ; 转去处理已经键入的数字cmp al,KBBackjz KB_Back ; 若是回空键,重新输入cmp al, 0jb KBBack ; 若低于数字 0 ,重新输入cmp al, 9ja KBBack ; 若高于数字 9 ,重新输入jmp Save_DigKB_Back: dec Cursor_Colinc cxdec diKBBack: call SetCursor ; 置光标位置jmp InputSave_Dig: and al

7、,0fh ; 转换成二进制数stosb ; 保存loop Input ; 接受下一个数字ASC_Dec: mov ax,cxpop cxpop sisub cx,ax ; 实际输入的数字位数xor bp,bp xor dx,dx xor ax,ax jcxz Save_Ret ;若直接回车,没有输入任何数字,按输入0处理 dec cx ;实际输入的数字位数减1, 准备把输入的这一串数字转换成二进制数 jcxz One_Digit ;若输入的数字只有一位,转去直接保存这个二进制数 mov bx,10 Mul_Ten: lodsb ;串操作指令 cbw add ax,bp mul bx mov b

8、p,ax loop Mul_Ten One_Digit:lodsb cbw add ax,bp Save_Ret: pop di stosw ;存入串指令的字操作 pop bx pop cx pop dx ret Save_Tmp db 16 dup(? Input_Digit EndP ; ; 功能:28位二进制数转换成十进制数并显示 ; 入口:DX=高12位,AX=低16位 Temp_Save db 11 dup(? DWord_ASCII Proc Near cld mov bx,10000 ;除数 lea di,Temp_Save10 mov byte ptr di,$ ;字符串末尾加

9、上一个$, 以备用dos功能调用9号功能显示 这个数字串 dec di ;地址前移一位 div bx ;除以1000,AX=商数(十进制数高5位,DX=余数(十进制数低4位 xchg ax,dx ;交换,先转换余数 push dx ;入栈保存商数 mov bx,10 ;除数,把16位二进制数转换成十进制数 mov cx,4 Divide_DX:xor dx,dx div bx or dl,30h -5- mov di,dl dec di loop Divide_DX pop ax Divide_AX:xor dx,dx div bx or dl,30h mov di,dl dec di tes

10、t ax,0ffffh jnz Divide_AX inc di push di pop dx mov ah,9 int 21h ret DWord_ASCII EndP ; N equ 4 ;输入的十进制整数位数 Number1 dw ? Number2 dw ? prompt_One db Please the first number: $ prompt_Two db 13,10,Please the second number: $ Start: push cs pop ds push cs pop es ;使数据段、附加段与代码段同段 Output prompt_One ;提示输入第

11、一个数 lea di,Number1 ;变量Number1的地址 call Input_Digit ;从键盘接受一个N位数字 Output prompt_Two ;提示输入第一个数 lea di,Number2 ;变量Number2的地址 call Input_Digit ;从键盘接受一个N位数字 call Output_CTLF ;输出一个回车、换行 call Output_CTLF ;输出一个回车、换行 mov ax,Number1 ;被乘数 mul Number2 call DWord_ASCII ;将乘积转换成十进制数并显示 Exit_Proc: mov ah,4ch ;结束程序 in

12、t 21h Code ENDS END Start ;编译到此结束 -6- 七、结果显示 八、感想、收获及体会 感想、 近两周的汇编语言课程设计结束了,我的收获很大。通过课程设计的编程 和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实 的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固所了学过 的知识,能用汇编语言运用顺序、选择、循环三大结构,进一步掌握了各个指令 的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用 DEBUG 指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程 序,必须认真对待代码的每一个细节,还必须熟练的掌握 debug 命令,这对程序 的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言 的结构和使用方法,有弄不懂的地方可上网查查,也可上图书馆查找,基本上能 独立阅读、编制和调试小规模的汇编语言程序。 。 -7-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1