⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 assemb2.asm

📁 用汇编写的简单的格式转换程序. 汇编语言完成不长,供大家参考吧
💻 ASM
字号:
;输入两个字符,输出其10进制,二进制,16进制的表示.       40405010415
;Test for MUL operater
;THE PROCEDUE      TO_BIN,PRINT_BIN,PRINT_HEX,PRINT_DEC,COUNT
;TO_BIN:CONVERT ASCII VALUE TO BINARY VALUE. THE VALUE IS STORED IN BINARY_VALUE
DATA SEGMENT
	ASCII_VALUE DB 6,0,6 DUP(?)
	BINARY_VALUE DW ?
	COUNT_NUM DB ?
	MSG_OPEN DB 0AH,0DH,'INPUT  INTEGER: ','$'
	MSG_DEC DB 0AH,0DH,'THE DEC RESULT IS: ','$'
	MSG_BIN DB 0AH,0DH,'THE BINARY RESULT IS: ','$'
	MSG_HEX DB 0AH,0DH,'THE HEX RESULT IS: ','$'
	MSG_COUNT DB 0AH,0DH,'THE NUMBER OF "1" IS: ','$'
	TABLE DW MSG_OPEN,MSG_DEC,MSG_BIN,MSG_HEX,MSG_COUNT
DATA ENDS
;----------------------------------------
CODE SEGMENT

			MAIN PROC FAR
						ASSUME CS:CODE,DS:DATA
BEGIN:	PUSH DS
				XOR AX,AX
				PUSH AX    
;--------------------------------------------
				MOV AX,DATA
				MOV DS,AX
				LEA SI,TABLE
				LEA BX,ASCII_VALUE
				MOV DX,[SI]
				MOV AH,09H
				INT 21H
				LEA DX,ASCII_VALUE
				MOV AH,0AH
				INT 21H
				
     				CALL TO_BIN
				CALL PRINT_BIN
				CALL PRINT_DEC
				CALL PRINT_HEX
				CALL COUNT
				RET
		MAIN	ENDP
;---------------------------------------------
		TO_BIN PROC NEAR
				XOR AX,AX
				XOR DX,DX
				XOR BX,BX
				XOR CX,CX
				MOV BL,10D
				LEA DI,ASCII_VALUE
				MOV CL,[DI+1];
				INC DI
				INC DI
			M:	PUSH CX
				DEC CX
				XOR AX,AX
			   	MOV AL,[DI]
				AND AL,0FH
				CMP CX,0
				JZ NN
			AAAA:	PUSH AX
				SHL AX,1
				SHL AX,1
				SHL AX,1
				MOV BX,AX
				POP AX
				SHL AX,1
				ADD AX,BX
				LOOP AAAA
			NN:	ADD DX,AX
				POP CX
				INC DI
				LOOP M
				
			     	MOV BINARY_VALUE,DX
				RET
		TO_BIN ENDP
;----------------------------------------------
		PRINT_DEC PROC NEAR
				LEA SI,TABLE
				MOV DX,[SI+2]
				MOV AH,09H
				INT 21H
				XOR CX,CX
				LEA DI,ASCII_VALUE
				MOV CL,[DI+1]
				INC DI
				INC DI
			     N:	MOV DL,[DI]
				INC DI
				MOV AH,02H
				INT 21H
				LOOP N
				
				RET
		PRINT_DEC ENDP
;------------------------------------------------
		PRINT_BIN PROC NEAR
		    LEA SI,TABLE
		    MOV DX,[SI+4]
		    MOV AH,09H
		    INT 21H
		    MOV CX,16
		    XOR DX,DX		    		    
		    MOV BX,BINARY_VALUE
		 PO:ROL BX,1
		    MOV DL,BL
		    AND DL,01H
		    ADD DL,30H
		    MOV AH,02H
		    INT 21H
		    LOOP PO
		    RET
		PRINT_BIN ENDP
;------------------------------------------------
		PRINT_HEX PROC NEAR
		    LEA SI,TABLE
		    MOV DX,[SI+6]
		    MOV AH,09H
		    INT 21H
		    XOR DX,DX
		    MOV BX,BINARY_VALUE
		    MOV CX,4
		  P:PUSH CX
		    MOV CL,4
		    ROL BX,CL
		    MOV DL,BL
		    AND DL,0FH		    
		    ADD DL,30H
		    CMP DL,39H
		    JA ADDTO
		    MOV AH,02H
		    INT 21H
		    JMP T 
	ADDTO:ADD DL,07H
				MOV AH,02H
				INT 21H
			T:POP CX
			  LOOP P
			  MOV DL,48H
			  MOV AH,02H
			  INT 21H
			  RET
		PRINT_HEX ENDP
;------------------------------------------------	    
		COUNT PROC NEAR
				LEA SI,TABLE
				XOR DX,DX
				MOV DX,[SI+8]
				MOV AH,09H
				INT 21H
				XOR DX,DX
				MOV BX,BINARY_VALUE
				MOV CX,0010H
		CCC:SHL BX,1
				JNC EXIT
				INC DX
	 EXIT:LOOP CCC
	 			MOV AX,DX
				MOV BL,10
				DIV BL
				MOV DX,AX
				CMP DL,0
				JZ XXX
				ADD DL,30H
	 			MOV AH,02H
	 			INT 21H
			XXX:	MOV CX,0008H
				ROL DX,CL
				ADD DL,30H
				MOV AH,02H
				INT 21H
	 			RET
	 		COUNT ENDP
;------------------------------------------------
		    
			
		CODE ENDS
			END BEGIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -