课程设计(3)

2019-03-22 23:25

附录:源代码

十进制与八进制相互转换的程序清单:

;DECIOCT

;十进制与八进制相互转换

;首先选择算法,1为八进制转十进制,2为十进制转八进制 ;***************************

DECioct SEGMENT

ASSUME CS:DECioct ;主程序部分。

main PROC FAR

start: MOV DL,3ah ; MOV AH,2 INT 21h

MOV AH,1 ; INT 21h

CMP AL,32h ;进制

JE REPEat2 ;进制

REPEat1: CALL octbin ; CALL crlf ; CALL binidec ; CALL crlf ; JMP REPEat1 ;

REPEat2: CALL DECibin ;制

CALL crlf ; CALL binioct ; CALL crlf ;

JMP REPEat2 ; main ENDP

;-----------------------------

显示提示附 输入选择数字 数字为1时,执行八进制转十数字为2时,执行十进制转八键盘输入八进制数转为二进制 回车并换行 二进制转十进制 回车并换行 重复执行 键盘输入十进制数转为二进回车并换行 二进制转八进制

回车并换行 重复执行 10

;十进制转二进制

DECibin PROC NEAR

MOV BX,0 ;将BX清零 NEwchar2:

MOV AH,1

INT 21h ;21号中断输入 SUB AL,30h ;ASCII转二进制 JL exit2 ;<0则跳转 CMP AL,9d ;判断是否>9

JG exit2 ; CBW ; XCHG AX,BX ; MOV CX,10d ; MUL CX ;AX XCHG AX,BX ; ADD BX,AX ; JMP NEwchar2 ;exit2: RET DECibin ENDP

;--------------------------------------- ;二进制转八进制

binioct PROC NEAR

MOV CL,2 ROL BL,CL MOV AL,BL AND AL,03h ADD AL,30h MOV DL,AL MOV AH,2 INT 21h

MOV CH,2 rotate2:

MOV CL,3 ROL BL,CL MOV AL,BL AND AL,07h ADD AL,30h MOV DL,AL MOV AH,2 INT 21h

DEC CH

如果大于则不是十进制数 字节转为字 交换寄存器 把10放如CX 扩大10倍 交换寄存器

原数的10倍加上输入数 跳转输入 ;移位数字2 ;循环左移2位

;把输入的数送入AL ;将高六位屏蔽 ;转换为ASCII ;输出AL ;剩余显示2位 ;移位数字3 ;循环左移3位

;把输入的数送入AL ;将高五位屏蔽 ;转换为ASCII ;输出AL ;递减CH

11

JNZ rotate2 ;CH不为0则跳转 RET binioct ENDP

;--------------------------------------- ;八进制转二进制

octbin PROC NEAR

MOV BX,0 NEwchar1:

MOV AH,1 INT 21h

SUB AL,30h JL exit1

CMP AL,8d JL ADD_to1

CMP AL,10h JGE exit1 ADD_to1:

MOV CL,3 SHL BX,CL MOV AH,0 ADD BX,AX JMP NEwchar1 exit1: RET octbin ENDP

;-------------------------------------- ;二进制转十进制

binidec PROC NEAR

MOV CX,10000d CALL DEC_div

MOV CX,1000d CALL DEC_div

MOV CX,100d CALL DEC_div

MOV CX,10d CALL DEC_div

MOV CX,1d CALL DEC_div RET

;---------------------------------------

;BX清零 ;输入数字 ;转换为二进制数 ;如果<8则跳转 ;移位数字3 ;左移3位 ;AH清0

;把新位移入数字 ;跳转继续输入 ;除数为10000 ;除数为1000 ;除数为100 ;除数为10 ;除数为1 12

;子程序

DEC_div PROC NEAR

MOV AX,BX ;把二进制数移入AX MOV DX,0 ;DX高八位清零 DIV CX ;除数CX MOV BX,DX ;余数移入BX MOV DL,AL ;商移入DL ADD DL,30h ;转换为ASCII MOV AH,2 ;输出十进制数位 INT 21h RET DEC_div ENDP

;--------------------------------------- binidec ENDP

;---------------------------------------

;回车和换行。

crlf PROC NEAR

MOV DL,0dh MOV AH,2 INT 21h

MOV DL,0ah MOV AH,2 INT 21h RET crlf ENDP

;---------------------------------------- DECioct ENDS

;***************************************** END start

;回车 ;输出 ;换行 ;输出 13

十六进制与十进制相互转换的程序清单:

;DECIOCT

;十进制与十六进制相互转换

;首先选择算法,1为十六进制转十进制,2为十进制转十六进制 ;***************************

DECioct SEGMENT

ASSUME CS:DECioct ;主程序部分。

main PROC FAR

start: MOV DL,3ah ; MOV AH,2 INT 21h

MOV AH,1 ; INT 21h

CMP AL,32h ;十进制

JE REPEat2 ;六进制

REPEat1: CALL octbin ;制

CALL crlf ; CALL binidec ; CALL crlf ; JMP REPEat1 ;

REPEat2: CALL DECibin ;制

CALL crlf ; CALL binioct ; CALL crlf ;

JMP REPEat2 ; main ENDP

;----------------------------- ;十进制转二进制

显示提示附 输入选择数字 数字为1时,执行十六进制转数字为2时,执行十进制转十键盘输入十六进制数转为二进回车并换行 二进制转十进制 回车并换行 重复执行 键盘输入十进制数转为二进回车并换行 二进制转十六进制

回车并换行 重复执行 14


课程设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于SolidWorks VRML实现虚拟现实的精确建模

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: