汇编语言码制转换程序作业

合集下载

汇编代码.386将十进制按位转换成为二进制互相转化实验报告

汇编代码.386将十进制按位转换成为二进制互相转化实验报告

汇编代码.386将十进制按位转换成为二进制互相转化实验报告全文共四篇示例,供您参考第一篇示例:引言汇编语言是一种底层的计算机语言,它直接面向计算机的硬件和指令集架构。

在计算机科学领域中,对汇编语言的理解和掌握是非常重要的,因为它可以帮助程序员更深入地理解计算机系统的工作原理。

本文将围绕着汇编语言中的十进制到二进制的转换,展开一项实验报告,通过编写汇编代码.386实现十进制和二进制的相互转换,并对实验结果进行分析和总结。

实验目的1. 了解汇编语言中的数据处理、位操作等基本概念和指令;2. 掌握利用汇编语言将十进制数字转换为二进制数,并将二进制数转换为十进制数的方法;3. 加深对计算机底层原理的理解,提高汇编语言编程能力。

实验过程1. 十进制转为二进制我们使用汇编语言编写代码,将给定的十进制数字转换为二进制数。

我们可以选择一个整数N作为输入,然后使用位操作指令将其转换为对应的二进制数。

在汇编语言中,可以使用移位操作来实现这一转换。

我们可以将整数N的每一位通过移位操作得到对应的二进制位,直到整个数转换完成。

2. 二进制转为十进制接下来,我们利用汇编语言编写代码,实现将给定的二进制数转换为十进制数的功能。

对于一个二进制数,我们可以通过相应的位操作和乘法操作将其转换为对应的十进制数。

具体来说,我们可以取得二进制数的每一位,并将其乘以相应位数的权值,然后求和得到十进制数。

实验结果在实验过程中,我们成功地编写了汇编代码.386来实现十进制和二进制的相互转换。

通过实际的测试和验证,我们得到了正确的转换结果。

这证明了我们的汇编代码在功能上是正确的,能够准确地进行十进制和二进制之间的转换。

实验总结通过这次实验,我们深入探讨了汇编语言中的数据处理和位操作等基本概念。

我们不仅了解了如何使用汇编语言进行十进制和二进制的转换,还加深了对计算机底层原理的理解。

我们也发现了汇编语言在实现这种功能上的高效性和灵活性。

结论本次实验通过汇编代码.386将十进制按位转换成为二进制,并实现了二进制到十进制的互相转化。

代码转换汇编

代码转换汇编

二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。

4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。

最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。

点击此处将给出十进制数和8421BCD编码的对应关系表。

1、BCD码与十进制数的转换BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。

例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时,其值为18。

又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD 码中,它是个非法编码 .2、BCD码的格式计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。

所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。

组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010 3、BCD码的加减运算由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于计算机总是把数当作二进制数来运算,所以结果可能会出错。

例:用BCD码求38+49。

解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。

汇编语言代码转换程序设计

汇编语言代码转换程序设计

信息工程学院课程设计报告设计题目:______代码转换程序设计______名称: 微机原理与接口课程设计班级:_______通信工程1002班______姓名:_______卓自强_王可______学号: ____2010013544 2010013524__设计时间: 至指导教师:__________卢清平____________评语:评阅成绩: 评阅教师:一、程设计的性质和目的通过课程设计,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关软件程序设计的基本知识和基本方法,硬件电路的设计等,通过实际动手能力的培养,进一步熟悉汇编语的结构和使用方法,掌握软硬结合的控制程序设计,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平,增进对汇编语言的认识,加强用汇编语言编程的能力;掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。

了解和掌握汇编语言程序设计过程、方法及实现,为以后相关的课程的学习打下良好基础。

二、课程设计要求1、遵循模块化、结构化的程序设计方法。

2、要求程序必须正确。

3、程序简明易懂,多运用输入输出提示,有出错信息及必要的注释。

4、要求程序结构合理,语句使用得当。

5、适当追求编程技巧和程序运行效率。

三、主要仪器设备及软件Pc机,MASM汇编软件,绘图软件,等四、课程设计题目及要求题目:代码转换程序要求:完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。

5种可选择的子功能分别为:1)实现小写字母向大写字母的转换2)实现大写字母向小写字母的转换3)实现二进制数向十六进制数的转换4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换五、课题分析及设计思路1、实现大小写字母之间的转换:输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改变;同样,小写字母改成大写字母时,若是小写字母则不改变2、二进制和十六进制数之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)表示输出;最多能把十六位二进制数(或四位十六进制数)用四位十六进制数(或十六位二进制数)表示输出;小于十六位(或四位)时按“q”结束并输出3、十进制数和十六进制数之间的转换:输入一个十六进制数,用十进制数表示输出;最大能把十六进制数FFFF转换成十进制数65535表示输出;小于FFFF时按“q”结束并输出整个程序由四个主要的子程序和若干个辅助子程序组成,实现六个转换功能:HEXIDEC用来把一个十六进制数转换成十进制数表示BINARY用来把十六制数转换为十六位二进制数表示BETOHE用来把一个十六位二进制数转换成十六进制输出1、INPUT用来输入字符串2、HEXIBIN用来输入一个十六进制数,并存放在BX中3、BINIDEC用来把BX中十六进制转换到十进制4、DEC_DIV用来除以各位十进制的权5、PRINT用来把BX中的十六进制数转换成二进制8、INBIN输入十六二进制数9、CRLF用来换行六、程序主要流程等于1调用BTOS 等于2调用STOB等于3调用HTOB等于4调用BTOH等于5调用HTOD调用INPUT 宏展开GAIXIE七、程序及主要代码与分析7.1程序及主要代码GAIXIE MACRO P1,P2,P3,P4,P5,P6 ;义该宏用来判定字母? P2: CMP BYTE PTR [SI],P3JB P5CMP BYTE PTR [SI],P4JNB P5CMP BYTE PTR [SI],'$' ;到$则结束JZ P6P1 BYTE PTR [SI],20HP5: INC SILOOP P2P6: LEA DX,BUF1+2 ;出改写后的字母MOV AH,9 ;调用9号中断功能,输出字符串INT 21HLEA DX,BF ;把BF首地址给CXMOV AH,9 ;调用9号中断功能INT 21HJMP START ;返回ENDMDA TA SEGMENT ;义数据段BUF DB '**********choose the operation**********',0DH,0AH DB '1:big to small',0DH,0AHDB '2:small to big',0DH,0AHDB '3:hexadecimal to binary',0DH,0AHDB '4:binary to hexadecimal',0DH,0AHDB '5:hexadecimal to decimal',0DH,0AHDB '6/q:EXIT',0DH,0AH,'$'BF DB 0DH,0AH,'$'BUF1 DB 21,?,20 DUP(?) ;用来存放输入的字符串BUF2 DB 'enter a hex data:$'BUF3 DB 'The input is wrong,choose again please:$'BUF4 DB 'enter a deci data:$'BUF5 DB 'enter a bin data:$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUF ;出选择界面MOV AH,9 ;调用9号中断功能INT 21HMOV AH,1 ;入要选择的操作INT 21HPUSH AX ;NT 会改变AL的值,应压栈保护LEA DX,BF ;行MOV AH,9 ;调用9号中断功能INT 21HPOP AX ;把AX压栈保护CMP AL,'1' ;把AL中内容跟1比较JZ BTOS ;相等则跳转到CMP AL,'2'JZ STOBCMP AL,'3'JZ HTOBCMP AL,'4'JZ BTOHCMP AL,'5'JZ HTODCMP AL,'6'JZ EXITCMP AL,71HJZ EXITLEA DX,BUF3 ;把BUF3的首地址给DXMOV AH,9INT 21HCALL CRLF ;调用子程序CALLJMP START ;返回,重新选择EXIT:MOV AH,4CH ;退出INT 21HBTOH:CALL BETOHE ;调用二进制转十六进制子程序HTOB:CALL BINARY ;调用十六进制转二进制子程序HTOD:CALL HEXIDEC ;调用十六进制转十进制子程序BTOS:CALL INPUT ;大写字母改为小写MOV CX,20 ;作为循环条件GAIXIE ADD,NEXT1,'A','Z',N1,N2 ;宏GAIXIE展开STOB:CALL INPUT ;小写字母改为大写MOV CX,20GAIXIE SUB,NEXT2,'a','z',N3,N4INPUT PROC NEAR ;输入字符串MOV DX,0 ;DX清零MOV DX,OFFSET BUF1 ;把BUF1的首地址给DXMOV AH,10 ;调用10号中断功能,输出字符串INT 21HLEA DX,BF ;把BF首地址给DXMOV AH,9INT 21HLEA SI,BUF1+2MOV BL,[SI-1] ;把输入的字符个数给BLMOV BH,0 ;BH清零MOV BYTE PTR [BX+SI+1],'$' ;把$作为字符串结束字符LEA DX,BUF1+2MOV AH,9INT 21HRET ;返回INPUT ENDPHEXIDEC PROC NEAR ;用该子程序把一个十六进制数转换成十进制数表示PUSH DS ;保护初始数据段SUB AX,AX ;AX清零PUSH AX ;把AX压栈保护START1: LEA DX,BUF2MOV AH,9INT 21HCALL HEXIBIN ;调用输入一个十六进制数子程序CMP AL,71H ;遇q则退出JZ EXIT1CALL CRLF ;换行CALL BINIDECCALL CRLFJMP START1 ;返回EXIT1:RETHEXIDEC ENDPHEXIBIN PROC NEAR ;输入一个十六进制数,并存放在BX中MOV BX,0 ;把BX清零MOV DX,0 ;作为输入四位的记数器INHEX:CMP DX,4 ;把DX跟4比较JNB HEXEND ;大于则跳转MOV AH,1 ;输入数据INT 21HCMP AL,71H ;遇到q则退出JZ HEXENDSUB AL,30H ;判断是否数字或字母?否则跳出JL HEXENDCMP AL,10 ;判断是否数字JL ADD_TO ;是则存放BX中SUB AL,7 ;把AL内容减7转为字母CMP AL,10 ;判断是否小写字母(a~f)JL HEXENDCMP AL,16JL ADD_TO ;小于则跳转SUB AL,20H ;判断是否大写字母(A~F)CMP AL,10JL HEXENDCMP AL,16JGE HEXENDADD_TO:MOV CL,4 ;作为循环条件SHL BX,CL ;BX乘以16MOV AH,0ADD BX,AX ;两数相加INC DX ;DX加1JMP INHEXHEXEND:RETHEXIBIN ENDPBINIDEC PROC NEAR ;用来把BX中十六进制转换到十进制MOV CX,10000 ;把10000给CX,作为万位的权CALL DEC_DIV ;调用除权子程序MOV CX,1000CALL DEC_DIVMOV CX,100CALL DEC_DIVMOV CX,10CALL DEC_DIVMOV CX,1CALL DEC_DIVRETBINIDEC ENDPDEC_DIV PROC NEAR ;除以各位十进制的权MOV AX,BX ;把BX内容给AXMOV DX,0 ;DX清零DIV CXMOV BX,DXMOV DL,ALADD DL,30H ;转换为ASSIIMOV AH,2INT 21HRETDEC_DIV ENDPCRLF PROC NEAR ;换行LEA DX,BFMOV AH,9INT 21HRETCRLF ENDPBINARY PROC NEAR ;该子程序用来把十六制数转换为十六位二进制数表示START2:LEA DX,BUF2MOV AH,9INT 21HPUSH DS ;把DS压栈SUB AX,AX ;AX清零PUSH AXCALL HEXIBINCMP AL,71HJZ EXIT2CALL CRLFCALL PRINTCALL CRLFJMP START2EXIT2:RETBINARY ENDPPRINT PROC NEAR ;把BX中的十六进制数转换成二进制MOV CX,16D ;记数ROT: SHL BX,1D ;每移一位最高位变为CFJC SET ;CF为1则跳到SET,否则输出0MOV DL,30HMOV AH,2INT 21HDEC CXJNZ ROTRETSET:MOV DL,31H ;输出1MOV AH,2INT 21HDEC CXJNZ ROTRETPRINT ENDPDECIBIN PROC NEAR ;输入一个五位的十进制数MOV BX,0MOV CX,0NEWCHAR:CMP CX,5JNB EXIT4MOV AH,1INT 21HCMP AL,71HJZ EXIT4SUB AL,30HJL EXIT4CMP AL,9JG EXIT4CBWINC CXXCHG AX,BXMOV DX,10MUL DXXCHG AX,BXADD BX,AXJMP NEWCHAREXIT4:RETDECIBIN ENDPBINIHEX PROC NEAR ;把BX中的十进制数转换成十六进制输出MOV CH,4ROTA TE:MOV CL,4ROL BX,CL ;把BX中高四位移到低四位,放到AL中MOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AH ;判断是否为数字JL PRINTITADD AL,7PRINTIT:MOV DL,ALMOV AH,2INT 21HDEC CHJNZ ROTA TERETBINIHEX ENDPBETOHE PROC NEAR ;用该子程序来把一个十六位二进制数转换成十六进制数START3:LEA DX,BUF5MOV AH,9INT 21HPUSH DSSUB AX,AXPUSH AXCALL INBINCMP AL,71HJZ EXIT5CALL CRLFCALL BINIHEXCALL CRLFJMP START3EXIT5:RETBETOHE ENDPINBIN PROC NEAR ;输入十六二进制数MOV BX,0MOV CX,0PUTIN:CMP CX,16JNB EXIT6MOV AH,1INT 21HCMP AL,1BHJZ EXIT6SUB AL,30HJL EXIT6CMP AL,1JG EXIT6CBWINC CXXCHG AX,BXMOV DX,2MUL DXXCHG AX,BXADD BX,AXJMP PUTINEXIT6:RETINBIN ENDPCODE ENDSEND START7.2算法分析小写字母的ASCII码比大写字母的ASC码大20H,因此,大写字母转换成小写字母就是将大写字母的ASCII码加20H,反之,小写字母转换成大写字母就是将小写字母的ASCII码减20H。

实验1---汇编语言语法练习与代码转换

实验1---汇编语言语法练习与代码转换

实验报告( 2015/ 2016 学年第二学期)课程名称微型计算机原理与接口技术实验名称实验时间指导单位指导教师学院学号指导老师实验报告三、实验过程描述与结果分析汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。

排除语法错误要求通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序。

但有很多语法错误,要求按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止,然后进行,并执行相应的可执行文件。

正确的执行结果是在屏幕上显示:25+9=34。

修改后代码:(分号后为修改);FILENAME:EXA121.ASM.486DATA SEGMENT USE16SUM DB ?,?,MESG DB '25+9= 'DB 0,0 ;DB 0,0,'$'N1 DB 9,F0H ;DB 9,0F0HNEXT: ADD [BX+8],SUM ;NEXT:MOV CL,SUMADD BYTE PTR [BX+8],CL ADD [BX+7],30H ;ADD BYTE PTR [BX+7],30HADD [BX+8],30H ;ADD BYTE PTR [BX+8],30HRETCHANG:ENDPCODE ENDSEND BEG。

实验1-汇编语言语法练习与代码转换

实验1-汇编语言语法练习与代码转换
8
六、指导教师评语 (含学生能力达成度的评价)
成绩
批阅人
日期
评分项 评 遵守实验室规章制度
学习态度
算法思想准备情况
程序设计能力

解决问题能力
课题功能实现情况
算法设计合理性
算法效能评价
回答问题准确度

报告书写认真程度
内容详实程度
文字表达熟练程度
其它评价意见
则 本次实验能力达成评价 (总成绩)
优秀
良好
; 程序跳转,如果最高位 是 1 那么就输出 1
JNC print0_max ;程序跳转, 如果最高位 是 0 那么就输出 0
Hale Waihona Puke print1_max: MOV DL , 31h ;把要在屏幕上输出的 字符 预先放到DL寄存器里边 ,
31h 表示字符 1
MOV AH , 2 ;把 要调用的系统功能的 第几号功能值放入 AH里边
2.运行截图 有3个负数,接下来分别显示最大和最小数的16位补码
实验报告
7
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
(一) 实验中遇到的主要问题及解决方法 1.普通的 DB 型只有 8 位,放不下 255 这个数 解决方法:改用 16 位 DW 型
(二)实验心得 第一次尝试用汇编写程序感觉很难,为了实现一个很简单的功能,不仅需要编写一长串代码, 期间还需要注意各种规范,如数据类型问题、运算时的正负号问题等。其中寄存器的数量少,感觉不 够用,很容易被新数据覆盖,所以需要及时把寄存器中的数据存入储存器中。虽然这次实验给人的体 验十分不友好,但是我也从中学到一段合格的程序的确是需要这样精打细磨出来的,通过实验我对数 据在内存中的二进制存放形式有了更深刻的理解。现在我还需要工具书的帮助,但相信熟能生巧,加 以时日我一定可以更流畅地编写一段程序。 (三)意见与建议(没有可省略)

汇编语言系列之汇编实现各种码制的转换(思路详解)

汇编语言系列之汇编实现各种码制的转换(思路详解)

汇编语⾔系列之汇编实现各种码制的转换(思路详解)⽬录1.⼗六进制转换为⼆进制数设计1.1设计要求:1.2设计思路:1.3程序清单:1.4程序运⾏结果及分析:2.⼗六进制转换为⼗进制数设计2.1设计要求:2.2设计思路:2.3程序清单:2.4程序运⾏结果及分析:3.⼗六进制转换为ASCII码3.1设计要求:3.2设计思路:3.3程序清单:3.4程序运⾏结果及分析:4.英⽂字母⼤⼩写转换设计4.1设计要求:4.2设计思路:4.3程序清单:4.4程序运⾏结果及分析:软件:emu8086语⾔:汇编语⾔(Assembly)注意:本⽂列出了⼗六进制转⼆进制、⼗进制、ASCII码及⼤⼩写字母转换的代码,全部代码为博主独⾃⼀⼈编写,会有瑕疵,谨慎使⽤。

1.⼗六进制转换为⼆进制数设计1.1设计要求:设计转换程序,将键盘键⼊的四位⼗六进制数据转换为等值的⼆进制数,并在终端显⽰。

要求:完善程序结构,设置程序错误出⼝。

输⼊的不是0-F间的值,显⽰错误提⽰信息,并要求重新输⼊。

1.2设计思路:依次输⼊四个⼗六进制数并依次存放到BX中,最后将BX中结果⼀位⼀位输出为⼆进制。

1.3程序清单:DATA SEGMENTpkey DB "pleas input 4 hex(0~F):$"ekey DB 0dh,0ah,'it is wrong!',0dh,0ah,'pleas input 4 hex(0~F) again:','$'huiche DB 0dh,0ah,'result is:',0dh,0ah,'$'numm DB 5 dup(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTATE:MOV AX,DATAMOV DS,AXMOV CX,4 ;输⼊⼗六进制数循环4次LEA SI,numm ;开辟变址寄存器SILEA DX,pkeyMOV AH,9INT 21H ;DOS功能调⽤,输出字符串lp: MOV AH, 1INT 21H ;DOS功能调⽤,输⼊4个⼗六进制数CMP AL,'9'JA abow9CMP AL,'0'JB eeroSUB AL,30h ;输⼊为0~9时ASCII码减30H存放JMP lopeero:LEA DX, ekey ;输⼊不在0~9且不在A~F时,显⽰错误MOV AH, 9INT 21HJMP lpabow9:CMP AL,'A'JNB abowaJMP eeroabowa:CMP AL,'F'JA eeroSUB AL,37h ;输⼊为A~F时ASCII码减37H存放JMP loplop: MOV [SI],ALROL BX,4ADD BX,[SI] ;将输⼊的数据存⼊BX寄存器中INC SIDEC CXJNZ lpMOV CX,16 ;输出⼆进制数循环16次LEA DX,huicheMOV AH,9INT 21H ;DOS功能调⽤,输出字符串lp1: ROL BX,1 ;左移1位后显⽰的是最⾼位MOV DL,BLAND DL,01H ;屏蔽DL⾼7位ADD DL,30H ;加30H对应ASCII码MOV AH,2INT 21H ;DOS功能调⽤,将内容按位输出DEC CXJNZ lp1CODE ENDSEND STATE1.4程序运⾏结果及分析:存放和输出时会遇到⼀些⼩问题,本程序通过移位和加法指令实现存放,⽐较⿇烦但可以实现,后⾯的程序有所改进。

汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习[优质参考]

汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习[优质参考]

ASCII码与BCD码之间的转换1)字符的ASCII码表示计算机中存储的信息很多,其中一部分是用于数学计算的数据,另一部分则是表示某种含义的字符或字符串。

由于从键盘输入的或屏幕显示的信息,都是用字符串的形式表示的。

因此,微机中必须能够存储和处理字符和字符串。

计算机中使用的字符包括有如下4类:·字母:A、B、C、…、Y、Z、a、b、c、…、y和z。

.数字:0、1、2、3、 (9)·专用符号:!、@、+、-、﹡、/、……·控制字符:BEL(响铃)、LF(换行)、CR(回车)……这些字符在计算机内部都由特定的二进制数表示。

目前在微机中,最常用的字符表示法是ASCII码(American Standard Code for Information Interchange,美国标准信息交换码)。

在这种表示法中,每一个字符可以表示为一个8位的二进制数,即一个字节。

其中。

低7位用于表示该字符的ASCII值,最高位未定义,一般可用作奇偶校验位。

常用字符的ASCII码表见表1.2。

2)、十进制数的BCD码表示BCD码(Binary Code Decimal),又称“二进制表示的十进制数”,是一种非常适合数据输出的编码。

一般而言,它可分为如下两种:(1)、压缩型BCD码:它用4位二进制数表示一位十进制数。

即采用二进制数0000~1001分别表示十进制数中的0~9,而另6种组合1010~1111在BCD中则不允许出现;(2)、非压缩型BCD码:它用8位二进制数,即一个字节表示一位十进制数。

其高4位固定为0,而低4位采用二进制数0000~1001分别表示十进制数中的0~9。

亦即用0000 0000~0000 1001分别表示十进制数中的0~9。

而其余组合则不允许出现。

表1列出了十进制数与BCD编码的对应关系。

1.按如下步骤操作,了解DEBUG 命令及其使用方法。

(1)打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。

汇编语言代码转换程序实验报告

汇编语言代码转换程序实验报告

课程设计说明书题目: 代码转换程序院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年 12月 17安徽理工大学课程设计(论文)成绩评定表摘要本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。

从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。

而且学会用INT21功能实现人机对话掌握代码转换的基本方法。

该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。

关键词:代码,进制,大小写字母,转换,INT21,人机交互性目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4程序调试 (11)4.1 运行界面分析 (11)4.2算法的分析 (12)4.3 调试过程及分析 (13)5心得体会 (14)5.1 设计体会 (14)5.2 系统改进 (14)参考文献 (15)1设计目的在做本次课程设计之前,首先要了解设计的目的。

本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。

从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。

而且学会用INT21功能实现人机对话掌握代码转换的基本方法。

该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。

汇编语言十六进制数转换成ascii码程序

汇编语言十六进制数转换成ascii码程序

汇编语言十六进制数转换成ascii码程序汇编语言是一种底层的计算机语言,它直接与计算机硬件进行交互。

在汇编语言中,常常需要将十六进制数转换为ASCII码。

本文将介绍如何使用汇编语言将十六进制数转换为对应的ASCII码。

在计算机中,ASCII码是一种将字符映射为数字的编码系统。

每个字符都对应着一个唯一的ASCII码。

在汇编语言中,可以使用一些指令和算法来实现十六进制数到ASCII码的转换。

需要明确十六进制数和ASCII码之间的对应关系。

在ASCII码中,数字0-9对应的十六进制数是30-39;大写字母A-Z对应的十六进制数是41-5A;小写字母a-z对应的十六进制数是61-7A。

根据这个对应关系,可以通过加减运算将十六进制数转换为对应的ASCII 码。

下面是一个使用汇编语言实现十六进制数转换为ASCII码的示例程序:```section .datahex_num db 0x41 ; 十六进制数ascii_num db 0 ; ASCII码section .textglobal _start_start:mov al, [hex_num] ; 将十六进制数加载到寄存器aladd al, 0x30 ; 转换为对应的ASCII码mov [ascii_num], al ; 将转换后的ASCII码保存到内存; 输出结果mov edx, 1 ; 文件描述符为1,代表标准输出mov ecx, ascii_num ; 输出的字符串地址mov ebx, 1 ; 输出的字符串长度mov eax, 4 ; 系统调用号为4,代表写文件int 0x80 ; 调用系统调用; 退出程序mov eax, 1 ; 系统调用号为1,代表退出程序xor ebx, ebx ; 返回值为0int 0x80 ; 调用系统调用```上述示例程序首先定义了两个变量,`hex_num`表示十六进制数,`ascii_num`表示转换后的ASCII码。

汇编语言程序大作业(含源代码)

汇编语言程序大作业(含源代码)

汇编语言程序大作业程序简介本程序的功能简单,是可以根据用户从键盘的不同输入,回显在显示器上不同的结果。

其实现的功能是当用户从键盘输入01至12之间的数时(一年12个月),程序能给用户返回其相应的月份的英文缩写符;程序的运行过程介绍1)当从编程环境按下运行按钮之后,屏幕上会显示如下一个窗口:图(1)提示使用者输入01至12之间的任一个两位数字,这里可以随意输入01至12之间的一个两位数字;2)这里从键盘输入如下图所示的数字接着按下回车键,则会显示用户所输入的数字的相应的月份的英文缩写,如下图所示:程序功能分析:本程序功能简单,仅有输入输出功能,即从键盘上输入一些数字并回车之后给使用者提示相应的信息,下面介绍程序中相应功能是如何实现的:第一,根据常规本程序没有涉及到子程序的概念,仅仅有照常的数据段和代码段而且同时把数据段定义为附加段;第二,在代码段里共有四个部分分别为主程序代码部分键盘输入部分设置部分和输出部分;下面分别介绍代码段里的各个部分代码段里的主程序部分:main proc farpush ds ;为返回而把ds保存到堆栈段sub ax,ax ;清空ax寄存器的内容push ax ;把0(清空后的ax的内容)推入堆栈段mov ax,DATASG ;mov ds,ax;把ax作为中间变量给数据段寄存器送入内存中数据段的首地址mov es,ax ;同时把该首地址送给附加段call input ;调用子程序input(输入子程序)call locate ;调用子程序locate(设置子程序)call display ;调用子程序display(输入子程序)ret ;返回main endp ;main主程序结束代码段里的键盘输入部分:input proc nearpush dx ;为保护dx而把其内容推入堆栈段lea dx,DSPLY1 ;为了让使用者知道程序一开始要输入什么,这里将把内存中数据段里的DSPLY1变量的首地址送给dx寄存器(专业的说法就是把DSPLY1的偏移地址送给了dx数据寄存器)mov ah,09h ;为了能显示DSPLY1变量里的字符串,故把09送给ah并之后中断一次int 21h ;DOS中断mov ah,0ah ;换行lea dx,MONIN ;把MONIN的偏移地址送给寄存器dxint 21h ;DOS中断mov ah,MONIN+2 ;把MONIN作为首地址后再加2以后的存储单元内容送ah mov al,MONIN+3 ;把MONIN作为首地址后再加3以后的存储单元内容送alxor ax,3030h ;清空ax的相应位置cmp ah,00 ;ah和00进行比较(主要确定键盘所输入的数字是否在01-09之间)jz return ;若ah的内容确实为0则跳到return标签处sub ah,ah ;若ah的内容不为零则清空ahadd al,10 ;之后al的内容相加10存入alreturn:pop dx ;重新从堆栈段弹出dxret ;返回input endp设置部分locate proc nearpush si ;保存si寄存器的内容(推入堆栈段)push di ;保存di寄存器的内容(推入堆栈段)push cx ;保存cx寄存器的内容(推入堆栈段)lea si,MONTAB ;把MONTAB的偏移地址送给si寄存器dec al ;al的内容减一(为建立一个表)mul THREE ;ax和数据段中的THREE变量进行相乘add si,ax ;之后si和ax的内容进行相加mov cx,03 ;把03送入cx寄存器cld ;为循环的方向做确定(定义方向为从左到右进行扫描)lea di,ALFMON ;把数据段中变量ALFMON的偏移地址送给di寄存器rep movsb ;进行以字节为单位的扫描pop cx ;从堆栈段弹出cxpop di ;从堆栈段弹出dipop si ;从堆栈段弹出siret ;返回locate endp输出部分display proc nearpush dx ;为保护dx的内容而把dxlea dx,DSPLY2 ;为了解释最后显示的结果,故把建立在数据段里的DSPLY2变量的首地址送给了dx寄存器,也就是把DSPLY2的偏移地址送给了dx寄存器mov ah,09h ;为了能够显示字符串故把09h送给了ah,并之后中断了一次int 21h ;DOS中断lea dx,ALFMON ;把ALFMON的偏移地址送给dx寄存器mov ah,09 ;为了屏幕上显示字符串int 21hpop dx ;从寄存器弹出dxretdisplay endp下面介绍数据段的定义:DATASG SEGMENT PARA 'DATA'THREE DB 3MONIN DB 3,4 DUP(?)ALFMON DB'???','$'MONTAB DB'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DE C'DSPLY1 DB'Plaese input two numbers(01-12): $'DSPLY2 DB'Your input month is: $'DATASG ENDS本程序的缺点是没办法连续地输入来确定不同的月份,而且是简单的基本输入输出功能的程序,尽管如此本人还是设计出了此程序。

微机原理课程设计(汇编语言)——将键盘输入的小写字母转换成大写字母的设计

微机原理课程设计(汇编语言)——将键盘输入的小写字母转换成大写字母的设计

SEGMENT DB 20 DUP(?) DB 'please input letters, end with enter, exit with ctrl-c',0DH,0AH,'$' DB 'the inverted litter is:', 0DH, 0AH,'$' DB 0DH,0AH,'$' ENDS SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX MOV SI,00H MOV BX,OFFSET DATA1 LEA DX,DISPP1 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,03H JZ L4 CMP AL,0DH JZ L3 CMP AL,61H JZ L2 SUB AL,20H JMP L2 MOV [BX+SI],AL INC SI JMP L1 LEA DX,DISPP3 MOV AH,9 INT 21H LEA DX,DISPP2 MOV AH,9 INT 21H MOV [BX+SI],AL MOV AL,0AH MOV [BX+SI+1],AL MOV AL,'$' MOV [BX+SI+2],AL MOV DX,BX MOV AH,9 INT 21H
INT 21H 的 01H 号子功能接收键入字符
Y
是 ctrl+c 键?
N Y
是回车键?
N
是小写字母?
N
Y
小写字母的 ASCII 码值转化为冲区[BX+SI]单元
SI 加 1 指向下一单元
显示转换后的字符行缓冲区内容

用汇编语言编写ASCII码转换BCD码的程序

用汇编语言编写ASCII码转换BCD码的程序

用汇编语言编写ASCII码转换BCD码的程序实验题目:ASCII码到BCD码的转换实验程序:SSEG SEGMENT PARA STACK 'stack'dw 100h dup(0) ;初始化堆栈大小为100SSEG ENDSDSEG SEGMENT;数据段:在此处添加程序所需的数据DSEG ENDSESEG SEGMENT;附加段:在此处添加程序所需的数据ESEG ENDSCSEG SEGMENTassume cs:CSEG, ds:DSEG, es:ESEG, ss:SSEGMAIN PROC FAR ;主程序入口mov ax, dsegmov ds, axmov ax,esegmov es, axMOV AL,4AHMOV BL,ALAND BL,00001111B ;低4位清零CMP BL,9JA L1ADD BL,20 ;调整输出L1: ADD BL,42MOV DL,BLMOV AH,02HINT 21HMOV BL,AL ;将AL的数放入BL中MOV CL,4ROL BL,CL ;将BL左移4位AND BL,00001111B ;将低4位清零CMP BL,9JA L2ADD BL,20 ;调整输出L2: ADD BL,42MOV DL,BLMOV AH,02HINT 21H;此处添加主程序代码;按任意键退出mov ah,1int 21hmov ax, 4c00h ;程序结束,返回到操作系统系统int 21hMAIN ENDPCSEG ENDSEND MAIN。

汇编进制转换

汇编进制转换

;子程序名:BCX;功能:将一16进制数转换成对应的ASCII码;入口参数:AL低4位中存放将要转换的16进制数;出口参数:AL中存放转换后的ASCII码;示例:输入(AL)=00001010(代表16进制A)输出(AL)=0100 0001(代表字符A的ASCII码)**************************;子程序名:DELAY;子程序功能:延时100ms;入口参数:无;出口参数:无;****************************DELAY PROC NEARPUSH BX ;保护现场PUSH CXMOV BX, 10LOPA: MOV CX, 2800HLOPB: DEC CXJNZ LOPBDEC BXJNZ LOPAPOP CX ;延时结束,恢复现场POP BXRETDELAY ENDP将数据段BUF地址处开始的10个16进制的字节数据转换成相应的ASCII码,存储在BUFF 地址处10个字单元中。

如16进制数1AH经变换后转换成其对应的ASCII码3141H。

DATA SEGMENTBUF DB 4AH, 56H, 98H, 2CH, 0F7H, 0E4H, 0DCH, 9EH, 32H, 7CHCOUNT EQU $-BUFBUFF DW 10 DUP (?)DATA ENDSSTACK SEGMENT STACKDB 100 DUP('S')STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART PROC FARPUSH DS ;标准程序前奏XOR AX, AXPUSH AXMOV AX, DATAMOV DS, AXLEA SI, BUF ;SI指向BUF的偏移地址LEA DI, BUFF ;DI执行BUFF的偏移地址MOV CX, COUNT ;CX是数据个数NEXT: MOV AL, [SI] ;取一个数据CALL CHANGE ;进行转换MOV [DI], BX ;存储转换结果INC SI ;SI指向下一个待转换的字节INC DI ;DI指向下一个存放转换结果的字单元INC DIDEC CX ;转换个数减1JNZ NEXT ;转换未全部完成,继续循环RETSTART ENDP;****************************************************;子程序名:CHANGE;功能:将一个16进制的字节数据转换成对应的ASCII码;入口参数::AL中为一个16进制字节数据;出口参数:BX中为转换后的两字节的ASCII码;**************************************************** CHANGE PROC NEARPUSH CX ;保护现场MOV BH, ALAND AL, 0FH ;取16进制的低4位CALL BCX ;进行ASCII码转换MOV BL, AL ;存放转换结果MOV AL, BHMOV CL, 4SHR AL, CL ;16进制的高4位右移到低4位CALL BCX ;进行ASCII码转换MOV BH, AL ;存放转换结果POP CX ;恢复现场RETCHANGE ENDP**************************************************;子程序名:BCX;功能:将一16进制数转换成对应的ASCII码;入口参数:AL低4位中存放将要转换的16进制数;出口参数:AL中存放转换后的ASCII码;**************************************************BCX PROC NEARCMP AL, 9 ;16进制数是否是数字0~9JBE L1 ;是数字,转向L1ADD AL, 'A'-10-'0' ;不是数字,转换成A~F的ASCII码L1: ADD AL, 30H ;是数字,转换成0~9的ASCII码RETBCX ENDP CODE ENDS END START1.TITLE toDec2. .model small3.4.stack segment5. db 100 dup(?)6.stack ends7.8.9.data segment10. n dw ?11. out_buff db 16 dup (?)12.data ends13.14.15.code segment16.assume cs:code,ds:data,ss:stack17.18. start:19. mov ax,stack20. mov ss,ax21. mov ax,data22. mov ds,ax23.24. mov ax,9 ;here you can change 9 to any value25. mov word ptr n, ax26.27. mov di, offset out_buff28. call to_DecString29. mov dx, offset out_buff30.31. mov ah, 9h32. int 21h33.34. mov ax,4c00h ; terminate program35. int 21h36.37.38.;conver a number result to output_buffer and fill 0x24 after number string39.;function:40.; conver 16 bit integer result to string41.;input parameter:42.; none, always convert varible n43.44.;output parameter45.; di: The address of output buffer46.47.48.to_DecString proc49. push di ;di is the address of out_buff50. mov bx,1051.52.convert_loop:53. xor dx,dx ;0 -> dx54. mov ax,word ptr [n]55. div bx56. mov word ptr [n],ax57.58. add dl,'0' ;save (result % 10)+'0' to out_buffer59. mov byte ptr [di],dl60. inc di ;di point next position61.cmp_r:62. cmp word ptr [n],063. jnz convert_loop64.65.inv_string: ;swap string head and string tail66. dec di ;the di point to the last char67. mov byte ptr [di+1], 24h ; For dos ah=09, string output, the terminal char must be0x2468. pop si ;now si is the address of out_buff69.70. inv_loop:71. mov al,[si] ;swap char72. mov ah,[di]73. mov [di],al74. mov [si],ah75. inc si76. dec di77.78.cmp_head_tail:79. cmp si,di80. jb inv_loop81. ret82.to_DecString endp83.84.code ends85. end start这是我曾经写的一个程序,这段代码的作用是循环4次输入4位16进制数,我把它转换位2进制数,方法就是对于每一位数(现在是ASCII码)转化为0——9或a——f的数,然后左移4位,放到一个变量里面,循环就行了,也就是16进制转换为2进制的基本算法,左移4位,不断的进行。

总汇编语言实验4涉及压缩BCD码大数据地转换程序及DEBUG练习

总汇编语言实验4涉及压缩BCD码大数据地转换程序及DEBUG练习

实用文档ASCII码与BCD码之间的转换1)字符的ASCII码表示计算机中存储的信息很多,其中一部分是用于数学计算的数据,另一部分则是表示某种含义的字符或字符串。

由于从键盘输入的或屏幕显示的信息,都是用字符串的形式表示的。

因此,微机中必须能够存储和处理字符和字符串。

计算机中使用的字符包括有如下4类:·字母:A、B、C、…、Y、Z、a、b、c、…、y和z。

.数字:0、1、2、3、 (9)·专用符号:!、、+、-、﹡、/、……·控制字符:BEL(响铃)、LF(换行)、CR(回车)……这些字符在计算机部都由特定的二进制数表示。

目前在微机中,最常用的字符表示法是ASCII码(American Standard Code for Information Interchange,美国标准信息交换码)。

在这种表示法中,每一个字符可以表示为一个8位的二进制数,即一个字节。

其中。

低7位用于表示该字符的ASCII值,最高位未定义,一般可用作奇偶校验位。

常用字符的ASCII码表见表1.2。

2)、十进制数的BCD码表示BCD码(Binary Code Decimal),又称“二进制表示的十进制数”,是一种非常适合数据输出的编码。

一般而言,它可分为如下两种:(1)、压缩型BCD码:它用4位二进制数表示一位十进制数。

即采用二进制数0000~1001分别表示十进制数中的0~9,而另6种组合1010~1111在BCD中则不允许出现;(2)、非压缩型BCD码:它用8位二进制数,即一个字节表示一位十进制数。

其高4位固定为0,而低4位采用二进制数0000~1001分别表示十进制数中的0~9。

亦即用0000 0000~0000 1001分别表示十进制数中的0~9。

而其余组合则不允许出现。

表1列出了十进制数与BCD编码的对应关系。

1.按如下步骤操作,了解DEBUG 命令及其使用方法。

(1)打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。

(完整word版)汇编语言课程设计代码转换程序

(完整word版)汇编语言课程设计代码转换程序

汇编语言课程设计报告( 2010 ——2011 年度第2 学期)代码转换程序专业计算机科学与技术学生姓名袁帅班级B计算机092学号0910704225指导教师王志宏完成日期2011年6月24日目录目录 (3)1概述 (1)1。

1 课程设计目的 (1)1。

2 课程设计内容 (1)2程序需求分析 (1)2。

1 程序目标 (1)2。

2 主体功能 (1)2.3 开发环境 (2)3程序概要设计 (2)3.1 程序的功能模块划分 (2)3。

2 程序流程图 (2)4程序详细设计 (4)4.1 程序功能菜单模块设计 (4)4.2小写字母向大写字母转换模块设计 (5)4。

3大写字母向小写字母转换模块设计 (5)4.4 二进制数向十六进制数转换模块设计 (6)4.5 十六进制数向二进制数转换模块设计 (6)4.6 十六进制数向十进制数转换模块设计 (7)5测试 (7)5.1 测试方案 (7)5.2 测试结果 (8)6小结 (8)参考文献 (10)附录 (11)附录1源程序清单 (11)附录1.1程序功能菜单模块源程序 (11)附录1.2小写字母向大写字母转换模块源程序 (14)附录1。

3大写字母向小写字母转换模块源程序 (16)附录1.4二进制数向十六进制数转换模块源程序 (17)附录1。

5十六进制数向二进制数转换模块源程序 (18)附录1.6十六进制数向十进制数转换模块源程序 (19)代码转换程序设计1 概述1.1 课程设计目的1、通过利用汇编语言写代码转换程序,更好的掌握汇编语言,通过实践来巩固汇编语言的理论知识。

2、巩固并加深对汇编语言程序设计知识的理解3、进一步掌握和应用汇编语言集成开发环境4、提高运用汇编语言解决实际问题的能力5、掌握书写程序设计开发文档的能力(书写课程设计实验报告)1。

2 课程设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。

汇编语言课程设计代码转换程序

汇编语言课程设计代码转换程序

汇编语言课程设计代码转换程序一、引言汇编语言是一种底层编程语言,它直接操作计算机硬件,具有高效性和灵活性。

在汇编语言课程中,学生通常需要完成一些代码转换的任务,比如将高级语言代码转换为汇编语言代码。

本文将介绍一个汇编语言课程设计的代码转换程序,该程序能够将C语言代码转换为汇编语言代码。

二、程序设计要求1. 输入:从文件中读取C语言代码;2. 输出:将转换后的汇编语言代码写入文件;3. 转换规则:根据C语言代码的语法和语义规则,将其转换为等效的汇编语言代码;4. 支持的语法和语义:程序需要支持C语言的基本语法和语义,包括变量声明、赋值语句、条件语句、循环语句等;5. 错误处理:程序需要能够检测并处理C语言代码中的语法错误和语义错误,给出相应的错误提示。

三、程序设计思路1. 读取C语言代码:程序首先需要从文件中读取C语言代码,可以使用文件输入流来实现。

读取的代码可以存储在内存中的数据结构中,比如字符串数组或者链表;2. 词法分析:程序需要对读取的C语言代码进行词法分析,将其分解为一个个的词法单元,比如关键字、标识符、运算符、常量等。

可以使用正则表达式或者有限状态机来实现词法分析;3. 语法分析:程序需要对词法单元进行语法分析,根据C语言的语法规则构建语法树。

可以使用递归下降法、LL(1)分析法或者LR(1)分析法来实现语法分析;4. 语义分析:程序需要对语法树进行语义分析,检查代码中的语义错误。

比如检查变量是否声明、类型是否匹配等。

可以使用符号表和类型检查来实现语义分析;5. 代码生成:程序需要根据语法树生成等效的汇编语言代码。

可以使用模板匹配或者中间代码生成来实现代码生成;6. 错误处理:程序需要实现错误处理机制,检测并处理C语言代码中的语法错误和语义错误。

可以使用异常处理或者错误码返回来实现错误处理。

四、程序设计实现1. 文件读取:使用文件输入流来读取C语言代码文件,将读取的代码存储在字符串数组中;2. 词法分析:使用正则表达式来实现词法分析,将C语言代码分解为词法单元,并存储在词法单元数组中;3. 语法分析:使用递归下降法来实现语法分析,根据C语言的语法规则构建语法树;4. 语义分析:使用符号表和类型检查来实现语义分析,检查代码中的语义错误,并给出错误提示;5. 代码生成:根据语法树生成等效的汇编语言代码,将代码写入文件中;6. 错误处理:使用异常处理机制来检测并处理C语言代码中的语法错误和语义错误,给出相应的错误提示。

汇编语言实验2数据转换实验

汇编语言实验2数据转换实验

程序如下所示:DATA SEGMENTBUF DB 5 DUP(?) ;预留5单元空间D0 DW 2A5HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV DI,OFFSET D0 ;将DI指向BUF的下一单元MOV AX,D0 ;取要用来变十进制数的数到AXMOV BX,10 ;准备除以10MOV CX,0 ;准备统计余数的个数CHANGE10: DEC DI ;准备存放余数,往前倒存INC CXMOV DX,0 ;将除数的高16位(在DX中)清0,DX也将用来存放余数DIV BX ;DX,AX除以BX (BX=10)ADD DL,30H ;余数变为ASCII码值MOV BYTE PTR[DI],DL ;存储十进制数CMP AX,0 ;是否为0?JNZ CHANGE10 ;不为0转CHANGE10 CHANGE11: MOV DL,BYTE PTR[DI] ;取出存放在BUF中的十进制数到DL供显示MOV AH,2 ;显示1个字符INT 21HINC DILOOP CHANGE11MOV AH,4CH ;程序结束并返回DOSINT 21HCODE ENDSEND START(1)请改变第三行的3A5H改变为4A3FH、0ABH、0A37BH后分别说明运行结果,并做解释。

不做修改改3A5H为4A3FH改3A5H为0ABH改3A5H为0A37BH(2)分析其中INC与DEC语句的作用是什么,用”;”号屏蔽这二句后运行结果又是什么?请解释。

(3)将MOV BX,10 ;准备除以10 中的10改为8,结果如何?意义是什么?4A3FH0A37BH(4)如果改为16,结果如何,试分析为什么是这样的结果?0A37BH0ABH4A3FH2.ASCII码表示的十进制数转换为二进制数并显示将SI指向的缓冲区BUF中保存的五位ASCII码十进制数(0-65535)转换成对应的二进制数并存放在DX中,再以二进制形式显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
051Ch -> '01308'
7.将ASCII码表示的两个十六进制数转换成一字节二进制数。
'A6' -> A6h
8.将一字节二进制数转换成两位ASCII码表示的十六进制数。
A6H -> 'A6'
9.将ASCII码表示的5位十进制数转换成二字节二进制数。
'01308'->051Ch
10.将16位二进制数转换成用ASCII码表示的5位十进制数。
作业二:
1.将一字节压缩BCD码转换为二个ASCII码表示的十进制数。
96H -> 39h,36h
2.将二个ASCII码表示的十进制数转换为一字节压缩BCD码。
39h,36h -> 96H
3.将一字节二进制数转换成两位ASCII码表示的十进制数。
79D -> 37h,39h
4.将两位ASCII码表示的十进制数转换成一字节二进制数。
37h,39h -> 4换成一字节二进制数。
'11011110' -> DEH
6.将一字节二进制数转换成8字节用ASCII码表示的二进制字符串。
DEH -> '11011110'
相关文档
最新文档