进制转换程序设计_第1页
进制转换程序设计_第2页
进制转换程序设计_第3页
进制转换程序设计_第4页
进制转换程序设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1经常使用数制运算机经常使用的数制:二进制,十进制,八进制,十六进制。通常表示一个数时,每一个数字表示的量不散取决于数字本身,而且取决于所在的位置,这种表示方式被称为位置表示法。在位置表示法中,对每一个数位给予必然的位值,称为权。每一个数位上的数字锁表示的量是那个数字和权的乘积。相邻两位中高位的权与低位的权之比若是是个常数,那么此常数称为基数,用X表示,那么数所表示的量N为N=c*X”t+a“_2X”-2+-,+oX°+CJX-I式中,从/X°起向左是数的整数部份,向右是数的小数部份;(-1与2-表示各数位上的数字,称为系数,它能够在0,1,,X-1共X中数中任意取值;m和

2、n为冥指数,均为正整数。正由于相邻高位的权与低位的权相较是个常数,因此在这种位值计数法中,基数(或称底数)X的取值不同便取得不同进位制数的表达式。(1)十进制十进制是生活中最经常使用的十进制,当X=10时,得十进位制数的表达式为H-I即可见死其特点是:系数为只能在0、9这10个数字中取值”:每一个数位上的权是10的某次冥;在加,减运算中,采纳“逢十进一,借一当十”的规那么。(2)二进制二进制是运算机中最经常使用的数值。当乂二2时、得二进制数的表达式为(N)?=二进制的特点是:系数为只能在0和1这两个数字中取值;每一个数位上的权是2的某次冥;在加减运算中,采纳“逢二进一,借一当二”的规那么。(3

3、)八进制和十六进制由于1位八进制数对应3位二进制,1位十六进制对应4位二进制,因此,当二进制数列很长时,能够用八进制或十六进制数来表示。当乂二8时;得八进制数的表达式为/r-1(N)s=八进制的特点是:系数只能在07这8个数字中取值;每一个数位上的权是8的某次冥;在加减运算中,采纳“逢八进一,借一当八”的规那么。同理,当X=16时,得十六进制数的表达式为/r-l(N)m=Z16ii-m十六进制的特点:系数为只能在。15这16个数字中取值(其中09这10个数字借用十进制中的数码,1075这6个数用A.BC,D,E,F表示);每一个数位上的权的16的某次冥;在加减运算中,采纳逢“十六进一,借一当十

4、六”的规那么。表列出四种进位制中数的表示法,其中B是Binary的缩写,表示该数为二进制数;Q表示该数为八进制数:H是Hexadecimald的缩写,表示该数是十六进制数;十进制数采纳符合D(Decimal)o表十进制,二进制,八进制,十六进制数码对照表十进制二进制八进制十六进制00000B0Q0H10001B1Q1H20010B2Q2H30011B3Q3H40100B4Q4H50101B5Q5H60110B6Q6H70111B7Q7H81000B10Q8H91001BHQ9H101010B12QAH111011B13QBH121100B14QCH131101B15QDH141110B16QE

5、H151111B17QFH数制间的转换规那么1 .十进制数与非十进制数之间的转换(1)十进制数转换成非十进制数把一个十进制数转换成祚十进制数(基数记作R)分成两步.整数部份转换时采纳“除R取余法”;小数部份转换时采纳“乘R取整法”。(2)非十进制数转换成十进制数非十进制数(基数记作R,第j个数位的位权记作Rj)转换成十进制数的方式:按权展开求其和。2.非十进制数之间的转换(1)二进制数与八进制数之间的转换二进制数转换成八进制数的方式.以小数点分界,整数部份自右向左、小数部份自左向右,每三位一组,不足三位时,整数部份在高位左侧补。,小数部份在低位右边补。,然后写出对应的八进制数码。八进制数转换成

6、二进制数的方式:用八进制数码对应的三位二进制数代替八进制数码本身即可。(2)二进制数与十六进制数之间的转换二进制数转换成十六进制数的方式:以小数点分界,整数部份自右.向左、小数部份自左向右,每四位一组,不足四位时,整数部份在高位左侧补。,小数部份在低位右边补0,然后写出对应的十六进制数码。十六进制数转换成二进制数的方式:用十六进制数码对应的四位二进制数代替十六进制数码本身即可。2设计原理程序流程图如下图。图程序运算流程图关于不同的情形咱们只需要概念不同的输入函数和输出函数,依照不同的情形,挪用不同的输入函数和输出函数。本程序挪用二进制输入,十进制输入,十六进制输入,二进制输出,十进制输出,十六

7、进制输出等六个子程序。确信程序功能和功能结构,数据结构,和用户界面;对各功能模块进行准确的概念,对全局数据变量进行说明和概念;确信各功能模块的原理及算法并画出相应的数据和程序流图。课设涉及到各类跳转,各个寄放器之间的移动,特定的输入和输出。挪用Olh的输入功能,结果在al中,挪用02h的输出功能,输出取得是dl里面的内容。提示信息的输出是用db来概念的,终止标志是$,同时我也概念了一个表,来应付各类不同的情形。第一输出一个选择窗口,有6种选择。依照自己的要求选择,选择以后,就会挪用相应的输入函数,必需输入相应进制的数进行处置,2进制数必需输入16位,16进制数输入4位,10进制数要求输入的必需

8、小于2的16次方。输入以后,程序就会处置输入数据,然后挪用相应的输出函数,就会输出相应的数据。输入函数,输出函数都是子函数。整个程序由主程序和假设干子程序组成。子程序:完成各数制之间转换的具体功能实现CRLF:实现回车换行的操作INBIN:二进制输入子程序OUTBIN:二进制输出子程序INDEC:十进制输入子程序入INHEX:十六进制输入子程序OUTDEC:10进制输出子程序OUTHEX:16进制输出子程序L1:二进制转化成十进制L2:二进制转换成十六进制L3:十进制转换成二进制L4:十进制转换成十六进制L5:十六进制转换成十进制L6:十六进制转换成二进制主程序:要紧实现友好的交互界面的设计,

9、和代码与数制之间彼此转换的子程序挪用。按时器通道3的G端与61H端口的bitO位相联,若是将61H端口的bitO位置成1,那么按时器通道3就被启动,现在将有一组信号从OUT端输出,信号的频率能够用程序操纵:假设61H端口bit。位为0,那么按时器被关闭,OUT端就会恒定为1,此电路用在那个地址相当一个可控开关,若是将61H端口的bit。、bitl位都置成1,那么相当于既打开了按时器乂打开了开关,这时按时器产生的声音信号就会送到放大器推动喇叭发声;假设将bitO位置0,那么按时器关闭,现在OUT端为1,这时若是持续改变bitl位的状态,也能够从喇叭入耳到声音;假设将0仃位置0,那么开关关闭,现在

10、即便打开按时器也不能听到声音。PC中的按时电路有三个通道,通道3用于发声,通道1用于操纵系统内部的时钟。通道1的工作方式和通道3一样,可是系统启动时设定其发出一个频率固定为的信号,那个信号直接送到系统中的中断操纵器。每一个都产生一个硬件中断,一样称那个硬中断为IRQO”,对应的中断号是08H。也确实是说,当运算机启动后,咱们的机械看上去十分安静,但事实上CPU超级忙碌。在按时器的操纵下每隔55毫秒就要执行一个08H号中断,那个中断的要紧工作确实是持续地计数。在内存0040H:006cH处有四字节的存储空间专门用于保留计数值,CPU每执行一次08H中断,这四字节的计数值就被加1,不难算出那个计数

11、值每增加1091后时刻恰好于了1分钟,每增加65454后时刻恰好于了1小时。系统内部的时钟之因此能准确走时,靠得确实是08H中断和这四字节的计数值。因此咱们要想精准的按时,必需依托时钟计数值才行。而该程序对时刻要求不是那么严。本次设计中,先将按时器3的OUT端置1,再给bitl一个矩形波,通过矩形波的频率来操纵喇叭发声的频率;假设操纵OUT端为高电平常的时长,那么能够操纵报警音的时刻。设计的报警子程序模块如下:BELLPROCMOVDX,65535INAL,61HANDAL,0FCHTRIG:XORAL,2OUT61H,ALMOVCX,65535Delay:LOOPDelayDECDXJNET

12、RIGRETBELLENDP;清零AX, CF;NT会改变AL的值,应压栈爱惜;实现依照输入进行跳转;显示字符串DS: DX二字符串;带回显的字符输入AL=8位数据;低于转移;高于转移;将TABLE首地址给SI;将人乂左移一名;相加结果送回SI;跳转到对应的进制转换部份;挪用子程序INBIN3源程序DATASEGMENT;数据段MENUDBTleaseInputyourChoice:0dh.0ahdb11:Bin->Dec0dh,0ahdb12:Bin->Hex0dh,0ahdb3Dec->Bin0dh,0ahdb14:Dec->Hex0dh,0ahdb15:Hex&g

13、t;Dec',0dh,0ahdb16:Hex->Bin0dh,0ahdb'0:Exit.$0dh,0ahmessOdb'error*mess1db'PleaseinputaBinniimber:$rmess2db'PleaseinputaDecnumber:$rmess3dbPleaseinputaHexnumber$mess4db'OutputBinis:$'mess5db'OutputDecis:$'mess6db'OutputHexis:$'TABLEDWLO,L1,L2,L3,L4,L5,L6

14、DATAENDSCODESEGMENTASSUMECS:CODEDS:DATAMAINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLKS:LEADX.MENUMOVAH.09HINT21HMOVAH.OIHINT21HCMPAU30HJBLKCMPAU36HJALKJMPLK1LK:CALLBELLJMPLKSLK1:ANDALOFHLEASLTABLEMOVAH,0SHLAXJADDSI,AXJMPSIL1:CALLINBINCALLCRLFCALLOUTDECCALLCRLFJMPLKSL2:CALLINBINCALLCRLFCALLOUTHE

15、XCALLCRLFJMPLKSL3:CALLINDECCALLCRLFCALLOUTBINCALLCRLFJMPLKSL4:CALLINDECCALLCRLFCALLOUTHEXCALLCRLFJMPLKSL5:CALLINHEXCALLCRLFCALLOUTDECCALLCRLFJMPLKSL6:CALLINHEXCALLCRLFCALLOUTBINCALLCRLFJMPLKSL0:RETMAINENDPCRLFPROCMOVAH,02HMOVDL.OAHINT21HMOVDL0DHINT21HRETCRLFENDPBELLPROCCALLCRLF;无条件转移到LKS子程序;BIN>H

16、EX;DEC>BIN;DEC>HEX;HEX>DEC;HEX>BIN;返回;回车换行子程序;将02H送AH;返回;报警子程序LEADX.MESSOMOVAH,09HINT21HCALLCRLFMOVDX.6553INAU61HANDAL.OFCHTRIG:XORAL,2OUT61H,ALMOVCX,65535Delay:LOOPDelayDECDXJNETRIGRETBELLENDPINBINPROCLEADX,MESS1MOVAH.09HINT21HMOVBX,0INBL1:MOVAH,01HINT21HCMPALODHJZINBEXITANDAL,01HSHLBXJ

17、ORBL,ALJMPINBL1INBEXIT:RETINBINENDP;二进制的输入;MESSI首地址送DX;比较;等于或结果为。转移;相与,送到AL;将BX左移一名;相或,送到BL;无条件转移到INBL1;返回;二进制的输入:每次咱们输入的数都放在al中,每次都将al和空的bl进行或运算,事实上就将咱们输入的数据存到了bx中,以后左移一名,在输入数据,以后重复进行上面的步骤,如此就将咱们所输入的数据存到了bx中。INDECPROCLEADX.MESS2MOVAH.09HINT21HMOVBX,0INDL1:MOVAH,01HINT21HCMPAL.ODHJZINDEXITSUBAL,30HC

18、MPAU9;十进制的输入;挪用9号中断功能,字符串L显示功能;等于或结果为。转移JBEINDL2SUBALJINDL2:MOVAH0XCHGAX.BXMOVCXJOMULCXADDBX.AXJMPINDL1INDEXIT:RETINDECENDP;低于或等于,不高于转移;互换,AX<>BX;(AX)<(AL)*(SRC);十进制的输入:通过ax和bx的配合利用,每次都将前一次输入的数据乘以10,在加上这一次的输入,就如此就形成了10进制的输入。INHEXPROCLEADX.MESS3MOVAH.09HINT21HMOVBX,0IHLkMOVAK01HINT21HCMPAUOD

19、HJZIHEXITSUBAL,30HCMPAU9JBEIHL2SUBALJIHL2:MOVCL,4SHLBX,CLORBL,ALJMPIHL1IHEXIT:RETINHEXENDP;十六进制的输入;等于或结果为。转移:相减,结果送AL;低于或等于,不高于转移;十六进制的输入:输入的数据放在al中,将al和bl将行或运算,将咱们所输入的数据保留起来,以后左移4位,在重复那个操作,将咱们所输入的数据全数保留在16数据里面。OUTBINPROCLEADX.MESS4MOVAH.09HINT21HMOVCXJ6OBL1:ROLBXJMOVDL,BLANDDU01HORDL,30H;二进制的输出MOVA

20、H.02HINT21HLOOPOBL1;循环OBL1子程序RETOUTBINENDP;二进制的输出:咱们所输入的数据都保留在bx中,每次都将bx左移一名,然后将bl的数据转存到dl中,力口上30h后,在输出以后确实是二进制的了。OUTDEC PROC LEA DX.MESS5 MOV AH.09H INT21HPUSH BX MOV AX.BX MOV DX,0 MOV CX J 0000 DIV CX MOV BX.DX MOV DUAL OR DL,30H MOV AH.02HINT21HMOV AX.BX MOV DX,0 MOV CXJ000 DIV CX MOV BX.DX MOV

21、DUAL OR DL,30H MOV AH.02HINT21H MOVAX.BX MOV DX,0 MOV CXJOO DIV CX MOV BX.DX MOV DUAL OR DL,30H MOV AH.02HINT21HMOV AX.BX MOV CL JO DIV CLMOV BL.AH MOV DUAL OR DL,30H MOV AH.02H INT21H;十进制的输出;入栈;余数;AX除以CX商送AL,余数送AH;逻辑与运算;AX除以CX商送AL,余数送AHMOVDL,BLORDL,30HMOVAH,02HINT21HPOPBX;出栈RETOUTDECENDP;十进制的输出:将保留

22、在bx中的数据转存到ax中来,由于19位数据所存最大数据是6万多,因此第一次除以一万,余数寄存在dx中,商存在al中,将ax中的内容转存到dl中,输出出来,而将dx中的余数乂转存到bx中,继续上面的操作,只是除数改城了1000,然后除数变成100,10,最后输出商。OUTHEX PROCLEA DX.MESS6MOV AH.09HINT21HMOV CX,4 OHL1:ROLBXJROLBXJROLBXJROLBXJMOV DL,BLAND DL0FHADD DL,30H CMP DL,39H JBE OHL2ADD DL,7OHL2:MOV AH,02HINT21HLOOPOHL1 RETO

23、UTHEX ENDP;十六进制输出程序;循环左移;加运算;低于或等于,不高于转移;OHL1循环;16进制的输出:bx中左移4位,将dl低四位与bl低四位,进行与运算,结果在dl中,然手加上30h,变成ask码输出,就能够够输出16进制数。CODEENDSENDMAIN4程序运行结果运行程序第一输出一个选择窗口,有6种选择。依照自己的要求选择进制转换之间的关系,选择以后,挪用相应的输入函数,必需输入相应进制的数进行处置。其中2进制数必需输入16位,16进制数输入4位,10进制数要求输入的必需小于2的16次方。输入以后,程序就会处置输入数据,然后挪用相应的输出函数,就会输出相应的数据。开始运行程序

24、J4.一尸vy一.一y-yPleasenputyourChoice:1:Bin>Dec,Bin->Hex1.Dec>BinJlDec>Hex匚一.Hex>DecHex->BinExi1*通过输入数字确信进制之间转换,其验证结果如下:输入06之外的数字是错误的,发出警报,显示为:C:cC:linJ0ISsysteB32c-d.ezPleaseInputyourChoice:1:Bin>Dec2:Bin>Hex32Dec>Bin4:Dec>Hex5=Hex>Dec6=Hex>Bin0:ExitChoose:8errot*L二进

25、制转换为10进制c:C:xTIffDOYSlsrsteB32cBdl.exeP1234560Oe ei e eils tDHBHDBPi p二二二 c c 一 二一二-e I t D n n c c X Xi eiieeeext SBBDDHHE uBinnumber:1102,二进制转换为16进制:MmOVSsrsteBSZcBd.exePlease Input your Choice:4 Oi OJ J Bin Bin Dec Dec Hex Hex>Dec 一一>Hex >Bin >Hex >Dec >BinExit. 2Please input a

26、Bin numher:0000000000001101Output Hex is: 000DTW13EiC=进制转换为二进制Plea.seInput:youi*Choice:i:Bin>Dec91Bin>Hex3;Dec>Bin4.Dec>WexJ.LjiHex>Dec£Hex>BlnExit.3PleaseinputaDecnumber:14putputBinis:00000000000011104,十进制转换为十六进制Decnt u p nc n e 6 .11 DBP >4c X Xi e .11 e e e e X SBBDDHHE

27、a e1 - - z I z - - P1234560nunber2105.十六进制转换为十进制PleaseInputyourChoice:1:Bin>Dec2:Bin>Hex3:Dec>Bin4:Dec>Hex5:Hex>Dec6:Hex>Bin0=Exit-5PleaseinputaHexnumber:000BOutputDecis:000116.十六进制转换为二进制Jr-PleaseInputyourChoice:1:Bin>Dec2:Bin>Hex3:Dec>Bin4:Dec>Hex5:Hex>Dec6:Hex>Bin0:Exit-6PleaseinputaHexnuinber:1234OutputBinis:0001001000110100ImriAi那个程序要求咱们输入必需符合二进制,十进制和十六进制的规那么,当二进制转化成其他进制时输入可为16位之内,而其他进制转换为二进制,二进制显示的是16位。16进制显示的是4位。当输入内容不符合程序要求时,仪器会发出警报,而且从头选择,直到选择或数入正确为止。5心得体会本次实验设tl的提点是将不同进制的输入输出别离写成功能不同的函数,不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论