资源描述:
《将键盘上输入的十六进制数转换成十进制数.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、将键盘上输入的十六进制数转换成十进制数,在屏幕上显示.已通过调试,运行OK.献给同样为微机原理的题目苦苦搜索的同学们~DATASEGMENT ;懒人,关于ERROR提示和输入提示和各处回车略 NUM16DB16 DB? DB8DUP(?) NDB?DATAENDS ;FROM唐如!CODESEGMENT MAINPROCFARSTART: ASSUMECS:CODE,DS:DATA MOVAX,DATA MOVDS,AX LEADX,NUM16 MOVAX,0A
2、00H INT21H LEASI,NUM16 MOVCL,[SI+1] ;实际输入的位数N2: MOVAH,0 ;AH清0 MOVN,CL ;当前N值转移给N MOVAL,[SI+2] ;依次一位一位取数 CMPAL,'A' ;与下三行一起转为数值 JBN1 SUBAL,07HN1: SUBAL,30H CMPN,0 ;N为0时已全转为2进制 JZTEN ;跳转至二进制转十进
3、制部分 INCSI ;取数完后指针加一 DECN ;取数完后N减一 MOVCL,N ;余下的数的位数入CL保存N3: CMPN,0 ;判断当前数的位数 JZN4 ;累乘完后当前数的二进制值保存在AX MOVDX,16 MULDX DECN JMPN3N4: ADDBX,AX ;把各位的二进制值加起来放到BX JMPN2TEN: MOV AX,BX ;复制到AX,做
4、除法 MOV DX,0 MOV CX,10000 DIV CX ;AX存商,DX存16位余数 CALLPLAY ;displayonebitindecimal MOV CX,1000 DIV CX CALLPLAY ;displayonebitindecimal MOV CX,100 DIV CX CALLPLAY ;displayonebitindecimal
5、 MOV CX,10 DIV CX CALLPLAY ;displayonebitindecimal CALLPLAY ;displayonebitindecimal MOVAH,4CH INT21HPLAY PROCNEAR ;逐位显示 XCHGAX,DX PUSHAX ;余数入栈保护 ADD DL,30H ;十进制数转ASC码 MOV AH,02H IN
6、T 21H ;显示 POP AX ;余数入AX除 MOV DX,0 RETPLAY ENDPMAINENDPCODEENDS ENDSTART