已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序如下所示:DATA SEGMENT BUF DB 5 DUP(?) ;预留5单元空间 D0 DW 2A5HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DI,OFFSET D0 ;将DI指向BUF的下一单元 MOV AX,D0 ;取要用来变十进制数的数到AX MOV BX,10 ;准备除以10 MOV CX,0 ;准备统计余数的个数CHANGE10: DEC DI ;准备存放余数,往前倒存 INC CX MOV DX,0 ;将除数的高16位(在DX中)清0,DX也将用来存放余数 DIV BX ;DX,AX除以BX (BX=10) ADD DL,30H ;余数变为ASCII码值 MOV BYTE PTRDI,DL ;存储十进制数 CMP AX,0 ;是否为0? JNZ CHANGE10 ;不为0转CHANGE10 CHANGE11: MOV DL,BYTE PTRDI ;取出存放在BUF中的十进制数到DL供显示 MOV AH,2 ;显示1个字符 INT 21H INC DI LOOP CHANGE11 MOV AH,4CH ;程序结束并返回DOS INT 21HCODE ENDS END START(1)请改变第三行的3A5H改变为4A3FH、0ABH、0A37BH后分别说明运行结果,并做解释。不做修改改3A5H为4A3FH改3A5H为0ABH改3A5H为0A37BH(2)分析其中INC与DEC语句的作用是什么,用”;”号屏蔽这二句后运行结果又是什么?请解释。(3)将MOV BX,10 ;准备除以10 中的10改为8,结果如何?意义是什么?4A3FH 0A37BH(4)如果改为16,结果如何,试分析为什么是这样的结果?0A37BH0ABH4A3FH2.ASCII码表示的十进制数转换为二进制数并显示将SI指向的缓冲区BUF中保存的五位ASCII码十进制数(0-65535)转换成对应的二进制数并存放在DX中,再以二进制形式显示。DATA SEGMENT BUF DB 25092 C DB B,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF ;将BUF的地址放到SI中 MOV DX,0 ;清DX为0; MOV CX,5 ;置循环次数为5 MOV BX,10GET_ASC: MOV AL,SI ;取出一个字符 CMP AL,0 ;必须保证5个数都是十进制数(0-9) JB EXIT CMP AL,9 JA EXIT ;判断是否是“0”-“9”DEC_BIN: SUB AL,30H ;减30H变二进制数 MOV AH,0 PUSH AX ;转换为对应的数并置于AX中,转存堆栈 MOV AX,DX MUL BX ;AX内容乘10 MOV DX,AX POP AX ADD DX,AX ;(DX)(DX) * 10 + (AX) INC SI ;使指针SI指向下一个字符 DEC CX JNZ GET_ASC MOV BX,DX ;取要显示的字符到BL中 MOV CL,16 ;移16次,最大数64000NEXT: MOV DX,0 SAL BX,1 RCL DX,1 ADD DX,30H MOV AH,2 INT 21H DEC CL JNE NEXT LEA DX,C ;取C的地址,以便显示单位B与回车换行 MOV AH,9 INT 21HEXIT: MOV AH,4CH INT 21HCODE ENDS END START(1)与上次实验中用二进制数显示一个字符的ASCII码程序的代码进行比较,那些地方是一致的?(2)将第二行的25092改为以下5个数:32H,35H,30H,39H,32H后(BUF DB 25092改为:BUF DB 32H,35H,30H,39H,32H )说明运行结果,并做解释。(3)为什么要使用堆栈,如果不使用会出现什么结果?3.二进制数到十六进制数的转换二进制整数转换为ASCII码十六进制数的基数为16,显示时注意从9到A,ASCII码跳了7!其他类似于例4.8。其程序代码如下:DATA SEGMENT BUF DB 5 DUP(?) ;预留5单元空间 D0 DW 1000100110100011BDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DI,OFFSET D0 ;将DI指向BUF的下一单元 MOV CX,0 MOV AX,D0 ;取要用来变十六进制数的数到AX MOV BX,16 ;准备除以16CBUF10: DEC DI ;准备存放余数,往前倒存 INC CX MOV DX,0;将除数的高16位(在DX中)清0,DX也将用来存放余数 DIV BX ;DX,AX除以BX (BX=16) ADD DL,30H ;余数变为ASCII码值 MOV BYTE PTRDI,DL ;存储十六进制数 CMP AX,0 ;是否为0? JNZ CBUF10 ;不为0转CBUF10 CHANGE11: MOV DL,BYTE PTRDI;取出存放在BUF中的十六进制数到DL供显示 CMP DL,3AH ;是否小于10? JB CHANGE12 ;如果小于10转显示 ADD DL,7 ;否则为A到F之间数,加7CHANGE12: MOV AH,2 ;显示1个字符 INT 21H INC DI LOOP CHANGE11 MOV AH,4CH ;程序结束并返回DOS INT 21HCODE ENDS END START(1)请改变第三行的数改变为0A3B9H、2374、35DH后分别说明运行结果,并做解释。改为0A3B9H改为2374改为35DH(2)将程序与第一题中的代码比较,看有那些共同点,那些不同点。在第一题后所提“将10改为16后结果如何”这一问题你回答对了吗?现在清楚了吗?4.ASCII码表示的十六进制数到二进制数的转换 从键盘输入四位十六进制数,将其转换十六位二进制数,并保存在DX寄存器中,再显示。 程序分析:十六进制数的数字符为0-9和a-f(或 A-F ),输入后以ASCII码30H-39H和61H-66H(或41H-46H )存入AL。明显,如是数字键 0-9,其ASCII码减去30H,即是该位十六进制数对应的四位二进制值。而如是字符键a-f或A-F,其ASCII码则要分别减去57H和37H,得到的差才是所输入的十六进制数字符对应的四位二进制值。程序如下所示:CODE SEGMENT ASSUME CS:CODESTART: MOV DX,0 MOV BL,4 ;输入字符个数INPUT: MOV AH,01H INT 21H ;键盘输入 SUB AL,30H JL NEXT1 ;输入其它字符 CMP AL,0AH JL CHANGE ;输入0-9 SUB AL,07H CMP AL,0AH JL NEXT1 ;输入其它字符 CMP AL,0FH JLE CHANGE ;输入A-F SUB AL,20H CMP AL,0AH JL NEXT1 ;输入其它字符 CMP AL,0FH JLE CHANGE ;输入a-f JMP NEXT1 ;输入其它字符CHANGE: MOV CL,4 SHL DX,CL MOV AH,0 ADD DX,AX ;(DX)(DX) * 16 + (AX) DEC BL JNZ INPUTNEXT1: MOV BX,DX ;取要显示的字符到BL中 MOV CL,16 ;移16次NEXT2: MOV DX,0 SAL BX,1 RCL DX,1 ADD DX,30H MOV AH,2 INT 21H DEC CL JNE NEXT2 MOV DL,B MOV AH,2 INT 21HEXIT: MOV AH,4CH INT 21HCODE ENDS END START(1)请分别输入:0B3F8H、0B3f8H、0b3F8H说明运行结果,并做解释。(2)将本题代码与第2题代码比较一下,看有没有相同点?四、操作步骤:1.在C盘生成一个新文件夹,例如P1,在该文件夹中拷入masm.exe、link.exe、debug.exe等工具程序2.打开记事本,将上面第1个程序复制生成纯文本文件,文件名以.asm为扩展名。3.从“开始”程序附件命令提示符,进入DOS命令界面。4. 使用CD命令,进入P1,命令为:CD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年3nm芯片制程研发团队年终技术突破总结与良率报告
- 2025年个人信息保护专项工作总结与整改报告
- 2025-2030年中国氟化工行业调研及发展前景投资研究报告
- 03文献综述-小型节能浮标试验系统
- 2026中国农业银行青海省分行校园招聘156人备考题库附答案详解(夺分金卷)
- 房地产销售逼单话术
- 2025青海黄南州尖扎县招聘社区专职工作者7人备考题库及答案详解一套
- 2025年阜阳阜南县柳沟镇招考村级后备干部8人备考题库含答案详解(考试直接用)
- 温州银行2026年度毕业生招聘备考题库附答案详解(综合题)
- 2025广西玉林市公安局第四次公开招聘警务辅助人员36人备考题库及答案详解(名校卷)
- 编辑入职测试题及答案
- 三上5.1《学做毛笔》
- 新概念英语第二册课后答案(全部)
- 人际冲突调解策略-洞察及研究
- 2024年青岛市公安局警务辅助人员招录考试真题
- 钢结构厂房施工技术培训
- 上海中心大厦分析详解
- 土建安全考试试题及答案
- 学校流感宣传教学课件
- 检验科室内质控培训课件
- 2025年药店从业人员培训试题带答案
评论
0/150
提交评论