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

📄 prtint16.asm

📁 十进制打印AX寄存器中的值的函数 对64位数的高32位进行递归排序
💻 ASM
字号:
;程序模板

SSEG SEGMENT PARA STACK 'stack'
	dw 100h dup(0) ;初始化堆栈大小为100
SSEG ENDS

DSEG SEGMENT
	;数据段:在此处添加程序所需的数据
DSEG ENDS

ESEG SEGMENT
	;附加段:在此处添加程序所需的数据
ESEG ENDS

CSEG SEGMENT
	assume  cs:CSEG, ds:DSEG, es:ESEG, ss:SSEG


	
MAIN PROC   	;主程序入口

	mov ax, dseg
	mov ds, ax
	mov es, ax

	
	;此处添加主程序代码
	mov ax, -2504
	CALL PrtInt16

	MOV AH, 01H
	INT 21H

	mov ax, 4c00h  ;程序结束,返回到操作系统系统
	int 21h
MAIN ENDP

;打印16位整数的函数, 参数放在AX中
PrtInt16 PROC
		MOV CX, 0
		CMP AX, 0
		JG greater0
		JZ equal0
		JL less0

	greater0:
		jmp signDealEnd
	equal0:
		jmp signDealEnd
	less0:
		PUSH AX
		MOV DL, '-'
		MOV AH, 02H
		INT 21H
		POP AX

		NOT AX	; 取反加1得相反数
		INC AX
		jmp signDealEnd
	signDealEnd:

		MOV BX, 10
	nextAX:
		MOV DX, 0
		DIV BX	;除以十
		PUSH DX	;余数放在DL中 (压栈保存)
	
		INC CX
		CMP AX, 0
		JNZ nextAX
	
		; 下面依次从栈中弹出并打印数字
		CLD
	nextCX:
		CMP CX, 0
		JZ prtStkEnd	;为0表示打印结束
		POP DX		;打印栈顶
		ADD DL, '0'
		MOV AH, 02H
		INT 21H
		DEC CX
		JMP nextCX

	prtStkEnd:
		ret
PrtInt16 ENDP
	
CSEG ENDS

END MAIN

⌨️ 快捷键说明

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