《代码转换》PPT课件.ppt
《《代码转换》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《代码转换》PPT课件.ppt(28页珍藏版)》请在三一办公上搜索。
1、1,第八章 代码转换,代码转换是在计算机程序设计中经常碰到的问题。如二进制数与十进制数的转换,ASCII码表示的十进制数与十六进制数之间的转换等等。,8.1 概述,2、直接转换法:依据转换规律,采用一定的算术运算或逻辑运算进行转换。,1、用查表的办法:这种方法主要用于代码之间的转换关系比较复杂的情况。但码元的数量必须是有限的。,代码转换可以用硬件快速实现,但更常用的方法还是用软件的方法来实现。用软件处理代码转换的方法通常有以下两种方法:,2,8.2 十六进制数的ASCII码与二进制数之间的相互转换,在编制源程序时,常用十六进制数。而从键盘输入时,在计算机中得到的是每个数符的ASCII码。因此需
2、要将这些ASCII码表示的数转换为二进制数。,十六进制的每个数符所对应的ASCII码如下表所示。,3,3、对于数符af,各个ASCII码值与对应的二进制数值之差都为57H。,1、对于数字符09,其ASCII码的低4位就等于对应的二进制值。转换时,只需要将ASCII码的高4位去掉,就是其对应的二进制数。而在二进制数前加上0011B,就是ASCII码。,2、对于数符AF,各个ASCII码值与对应的二进制数值之差都为37H。,因此,对于数符AF和af,转换时,可以将各个ASCII码值减7H后再去掉高4位。,4,例1 将4位十六进制数的ASCII码分别转换为对应的4位二进制数,然后将它们组合成一个16
3、位长的二进制数。,对于数字09的ASCII码,将其高4位二进制数去掉,就是对应的二进制数,对应字母AF或 af,将其ASCII码减去7,则其低4位与对应的4位二进制数相同。再去掉高4位即可。,5,F?,Y,CF=1,a?,f?,A?,Y,Y,Y,CF=0,数符ASCII码减7,返回主程序,返回主程序,字母数符子程序流程图,N,N,N,6,开始,输出提示信息,输入4位十六进制数,初始化循环次数、存结果的AX,取一个数符,数符0?,N,数符9?,N,清高4位,AX左移4位后存结果,循环次数=0?,Y,修改循环次数,结 束,调用字母数符子程序,数符有效?,Y,Y,输出出错信息,Y,N,主程序流程图,
4、N,7,DATA SEGMENTPROMPT DB INPUT HEXADECIMAL(4DIGIT):$HEX DB 5,0,5DUP(0)BIN DW?ERR DB 0AH,0DH,ERROR!NO-HEXADECIMAL!$DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDS,8,COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1HEXBIN:MOV AX,DATA MOV DS,AX LEA DX,PROMPT;显示提示信息 MOV AH,09H INT 21H LEA DX,
5、HEX MOV AH,0AH;输入4位十六进制数 INT 21H LEA SI,HEX+2;取输入字符首地址 MOV CH,HEX+1;取字符数 MOV AX,0CONV:MOV BL,SI;代码转换 CMP BL,0 JB ERROR;0,出错 CMP BL,9 JBE BIN1;是0-9,转移,9,CALL HEX1;是字母符,调用子程序 JC ERROR;是错误的字符BIN1:AND BL,0FH MOV CL,4 SAL AX,CL;空出低4位装新转换的值 OR AL,BL INC SI DEC CH;转换字符计数 JNE CONV MOV BIN,AX;存结果 JMP END0ERR
6、OR:MOV BIN,0 LEA DX,ERR MOV AH,09H INT 21HCOSEG ENDS END HEXBIN,10,;判断大小写子程序HEX1 PROC CMP BL,F JA SMALL CMP BL,A;JB ERROR1;f,出错OUT1:SUB BL,07H;CLC;无错误CF=0 RETERROR1:STC;设置出错标志CF=1 RETHEX1 ENDPEND0:MOV AH,4CH INT 21H,11,8.3 二进制数与十进制数之间的转换,例1 将16位无符号二进制数转换为用ASCII码表示的十进制数,算法分析:1.16位无符号二进制数表示的十进制数范围为065
7、535,需要分别求出万位、千位、百位、十位和个位的值。2.从16位二进制数中能够减10000的次数就是万位的值,剩下的数再用1000去减,这样依次进行下去,直至个位。,12,DATA SEGMENTCONST DW 10000,1000,100,10DEC5 DB 5 DUP(0)DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDS,13,14,CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1BINDEC:MOV AX,DATA MOV DS,AX MOV CX,4;转换后十进制位数-1
8、 LEA SI,CONST;常数首址 LEA DI,DEC5;取存十进制数ASCII码的首址 MOV AX,BIN1;取待转换数CONV3:MOV BL,0;位计数器初始化LOP1:SUB AX,SI;试减 JC NEXT;不够减,转NEXT INC BL;够减,计数 JMP LOP1,15,NEXT:ADD AX,SI;不够减,恢复余数 OR BL,30H;形成ASCII码 MOV DI,BL;存结果 INC SI;取下一个常数地址 INC SI INC DI;修改存结果指针 LOOP CONV3;继续 OR AL,30H;形成个位的ASCII码 MOV DI,AL;存个位数 MOV AH,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码转换 代码 转换 PPT 课件
链接地址:https://www.31ppt.com/p-5460164.html