汇编二进制转十进制,十六进制代码.doc_第1页
汇编二进制转十进制,十六进制代码.doc_第2页
汇编二进制转十进制,十六进制代码.doc_第3页
汇编二进制转十进制,十六进制代码.doc_第4页
汇编二进制转十进制,十六进制代码.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

特注:代码可以优化,请读者自己思考,运行结果绝对没问题!实验二数制转换程序代码二进制到十进制转换DATAS SEGMENTS0 DB please input a binary (length16):,0AH,0DH,$ S1 DB 18 S2 DB ? ;总长度 S3 DB 16 DUP(0);存放首地址 S4 DW ? ;存放输入的二进制数 S5 DB The nuber is not a binary!,$ S6 DB Do you want to continue?(Y or N):,0AH,0DH ,$ TEMP DB 0 BUF DB 5 DUP (?);此处输入数据段代码 DATAS ENDSSTACKS SEGMENT DB 256 DUP (?) ;初始化堆栈大小为100;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV SS,AX;-;输入一个二进制数 LOOPP: CALL CLS CALL HC MOV DX,OFFSET S0 ;显示字符串s0 CALL G9 ;please input a binary (length16):,0AH,0DH,$ MOV DX,OFFSET S1 ;申请16个内存空间 MOV AH,0AH ;将数输入到缓冲区 INT 21H;-;将输入的数据整合放到AX中 MOV SI,OFFSET S3 MOV CL,S2 MOV CH,0H MOV AX,0HLOOP1: CMP BYTE PTR SI,30H ;判断是否为二进制数 JL EXIT CMP BYTE PTR SI,31H JG EXIT MOV BL,SI SUB BL,30H MOV BH,0H INC SI SHL AX,1 ADD AX,BX LOOP LOOP1 MOV S4,AX CALL HC;-;二进制转换成十进制 MOV SI,5 MOV AX,S4 MOV CX,5 MOV BX,10LP: CWD MOV DX,0 DIV BX ADD DL,30H MOV BUF SI-1,DL DEC SI LOOP LP;-;显示结果 CALL COUNT ;找到第一个非零元的位置 MOV AL,TEMP MOV AH,0 MOV SI,AX MOV CX,5LOOPPP: MOV DL,BUFSI MOV AH,02H INT 21H INC SI LOOP LOOPPP JMP EXIT1 EXIT: CALL HC MOV DX,OFFSET S5 ;显示字符串S5 CALL G9 ;The nuber is not a binary!,$ EXIT1: CALL HC MOV DX,OFFSET S6 ;显示字符串S6 CALL G9 ;Do you want to continue?(Y or N):,0AH,0DH ,$ MOV AH,1 INT 21H CMP AL,Y JE LOOPP CMP AL,y JE LOOPP MOV AH,4CH INT 21HCOUNT: ;判断第一个非零元的位置 MOV TEMP,0 MOV SI,0 MOV CX,4LOO: MOV DL,BUFSI CMP DL,30H JNE EXIT3 MOV AL,TEMP ADD AL,1 MOV TEMP,AL INC SI LOOP LOO EXIT3: RET G9: MOV AH,9 ;显示功能调用 INT 21H CALL HC RETHC: ;回车换行 MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H RETCLS: MOV AH,6 ;屏幕初始化 MOV AL,0 MOV BH,7H MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 INT 10H MOV BH,0 ;置光标位子 MOV DX,0 MOV AH,2 INT 10H RET CODES ENDS END START二进制到十六进制转换DATAS SEGMENTS0 DB please input a binary (length16):,0AH,0DH,$ S1 DB 17 S2 DB ? ;总长度 S3 DB 16 DUP(0);存放首地址 S4 DW ? ;存放输入的二进制数 S5 DB The nuber is not a binary!,$ S6 DB Do you want to continue?(Y or N):,0AH,0DH ,$ S7 DB The length of the numbei is not 16,$DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV SS,AX;-;输入一个二进制数 LOOPP: CALL CLS CALL HC MOV DX,OFFSET S0 ;显示字符串S0 CALL G9 ;please input a binary (length16):,0AH,0DH,$ MOV DX,OFFSET S1 ;申请16个内存空间 MOV AH,0AH ;将数输入到缓冲区 INT 21H;-;将输入的数据整合放到AX中 MOV SI,OFFSET S3 MOV CL,S2 MOV CH,0H MOV AX,0HLOOP1: CMP BYTE PTR SI,30H ;判断是否为2进制 JL EXIT CMP BYTE PTR SI,31H JG EXIT CMP S2,10H ;判断是否为16为二进制 JNE EXIT2 MOV BL,SI SUB BL,30H MOV BH,0H INC SI SHL AX,1 ADD AX,BX LOOP LOOP1 MOV S4,AX CALL HC;-;二进制变16进制并输出 MOV BX,S4 CMP BX,0 JZ ZERO MOV CH,04H MOV CL,04H NEXT: ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,3AH JB L ADD DL,7H L: CALL XS DEC CH JNZ NEXT JMP WEISHUZERO: MOV DL,0 CALL XSWEISHU: MOV DL,H CALL XS JMP EXIT1 ;-;选择用的程序EXIT: CALL HC MOV DX,OFFSET S5 ;显示字符串S5 CALL G9 ; The nuber is not a binary!,$ JMP EXIT1EXIT2: CALL HC MOV DX,OFFSET S7 ;显示字符串S7 CALL G9 ; The length of the numbei is not 16,$ EXIT1: CALL HC MOV DX,OFFSET S6 CALL G9 ;显示字符串S6 MOV AH,1 ;Do you want to continue?(Y or N):,0AH,0DH ,$ INT 21H CMP AL,Y JE LOOPP CMP AL,y JE LOOPP MOV AH,4CH INT 21HG9: MOV AH,9 ;显示功能调用 INT 21H CALL HC RETHC: ;回车换行 MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H RETCLS: MOV AH,

温馨提示

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

评论

0/150

提交评论