汇编语言实现四个以内十六进制的数到二进制的转换并输出

上传人:jiups****uk12 文档编号:48508381 上传时间:2018-07-16 格式:DOC 页数:5 大小:64KB
返回 下载 相关 举报
汇编语言实现四个以内十六进制的数到二进制的转换并输出_第1页
第1页 / 共5页
汇编语言实现四个以内十六进制的数到二进制的转换并输出_第2页
第2页 / 共5页
汇编语言实现四个以内十六进制的数到二进制的转换并输出_第3页
第3页 / 共5页
汇编语言实现四个以内十六进制的数到二进制的转换并输出_第4页
第4页 / 共5页
汇编语言实现四个以内十六进制的数到二进制的转换并输出_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《汇编语言实现四个以内十六进制的数到二进制的转换并输出》由会员分享,可在线阅读,更多相关《汇编语言实现四个以内十六进制的数到二进制的转换并输出(5页珍藏版)》请在金锄头文库上搜索。

1、;程序功能:将四个16进制数(可以是数字以及AF大小写均可以)转换成2进制 数输出 ;程序举例:输入1234 ;输出 0001 001000110100;-数据段定义- DATASSEGMENT DATA DB 10,?,10 DUP(?) RESDB 10 DUP(?);存放最后输入的4个数 DATA0 DB Please input Hexadecimal numbers :,$ DATA1 DB The string is wrong,please input again:,$ DATA2 DB ,$ ;这个字符串是为了输出空格 DATA3 DB The binary number yo

2、u have input is:,0AH,0DH,$ DATAS ENDS;-堆栈段- STACK SEGMENT DW256 DUP(?) STACK ENDS;-代码段- CODE SEGMENT ASSUME DS:DATAS,SS:STACK,CS:CODE START:MOV AX,DATASMOV DS,AX MOVDX,OFFSET DATA0;9号功能调用输出提示信息 MOVAH,9 INT21H L0: MOVDX,OFFSET DATA;输入16进制数(可以使1至9个) MOV AH,10 INT21HCALL INPUT;函数调用 CALLNEWLINE CALLOUTP

3、UT EXIT: MOVAH,4CH INT21H;*将输入的字符串放到DX中*INPUT PROCNEAR PUSHCX PUSHDX PUSHSI PUSHDI CALL NEWLINE MOVDI,2 MOVCX,0 MOVCL,DATA1;将输入的十六进制数个数存入CX;/判断所有字符是否正确 LOOP0: SUBDATADI,30H ;首先减去30H比较 JLINAGAIN CMPDATADI,9 JLECOMPARE SUBDATADI,07H ;若为A-F再减去7H JLINAGAIN CMPDATADI,15 JLECOMPARE SUBDATADI,20H ;若为a-f再减去

4、20H JLINAGAIN CMPDATADI,15 JLECOMPARE INAGAIN: CALLNEWLINE;若输入不符合十六进制数规则,报错,从新输 入 CALLERROR JMPL0COMPARE: INCDI LOOPLOOP0 JMPDEAL;/将后4位存入数组res DEAL: MOVDI,0;DI作为数组res的下标 MOVCX,0 MOVCL,DATA1;将个数存入cl,再转到SI中 CMPCX,4 JAENEXT0 MOVSI,1;个数小于4时处理JMPREAL NEXT0: MOVSI,CX SUBSI,3;将十六进制数个数中内容装换成对应下标 MOVDX,0 MOV

5、CX,4;(改成更多要修改此处)cx为存入res中十六进制 数个数REAL: INCSI MOVDL,DATASI;将输入的数字后4位存入res数组中 MOVRESDI,DL INCDI LOOPREAL POPDI POPSI POPDX POPCX RET INPUT ENDP;*将输入的数输出* OUTPUTPROCNEAR PUSHAX PUSHBX PUSHDX PUSHCX PUSHDI MOVDX,OFFSET DATA3;提示信息 MOVAH,9 INT21H CALLNEWLINE;换行MOVDI,0 MOVDX,0 MOVCX,0;将cx清0便于后面计数 MOVCL,DAT

6、A1 CMPCL,4;改成更多要修改此处,将CX中放入输入的16 进制数个数 JLLOOP1 MOVCX,4;如果CX4就只要最后四个 LOOP1: PUSHCX;此时cx为将要输出数字个数 MOVCX,4;此处cx赋值4是因为每一个16进制数占4个二进制位 MOVDL,RESDI LOOP2: MOVBL,DL ANDDL,01H;保留最低位 PUSHDX MOVDL,BL RORDL,1 LOOPLOOP2MOVCX,4;此处cx赋值4是因为每一个16进制数占4个二进 制位 LOOP3: POPDX ADDDL,30H MOVAH,2 INT21H LOOPLOOP3 CALLSPACE

7、NEXT1: INCDI POPCX LOOPLOOP1 POPDI POPDX POPCX POPBX POPAX RET OUTPUTENDP;*提示出错信息* ERRORPROCNEAR PUSHAX PUSHDX MOVDX,OFFSET DATA1 MOVAH,9 INT21H POPDX POPAX RET ERROR ENDP;*回车换行* NEWLINE PROC NEAR PUSH AX PUSH DX MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H POP DX POP AX RET NEWLINE ENDP;*空格* SPACE PROC NEARPUSH AXPUSH DXMOV DX,OFFSET DATA2MOV AH,9INT 21HPOP OP AXRET SPACE ENDPCODE ENDS ENDSTART

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号