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

📄 ldate.asm

📁 汇编编程艺术
💻 ASM
字号:
StdGrp		group	stdlib,stddata

stddata		segment	para public 'sldata'

		public	sld_Months
sld_Months	db	"   "			;Dummy because we're based
		db	"Jan"			; at one rather than zero.
		db	"Feb"
		db	"Mar"
		db	"Apr"
		db	"May"
		db	"Jun"
		db	"Jul"
		db	"Aug"
		db	"Sep"
		db	"Oct"
		db	"Nov"
		db	"Dec"

stddata		ends



stdlib		segment	para public 'slcode'
		assume	cs:stdgrp
		extrn	sl_itoa2:far

; LDTOA-	(Date to ASCII) Converts an MS-DOS format date to an ASCII
;    		string (format: MON day, year)
;
; LDTOA2-       As above, but it does not preserve DI, it leaves DI pointing
;		at the zero terminating byte of the string.
;
; xLDTOA-	Reads the system date and converts it to a string as per
;		LDTOA.
;
; xLDTOA2-	Reads the system date and converts it to a string as per
;		LDTOA2.
;
;
; inputs:
;
;		CX-	Year (1980..2099)	(LDTOA/LDTOA2 only)
;	        DH-	Month (1..12)		(LDTOA/LDTOA2 only)
;		DL-	Day (1..31)     	(LDTOA/LDTOA2 only)
;		ES:DI-	Points at first byte of buffer to hold date string
;
;		Note: xLDTOA and xLDTOA2 read the date from the system clock.
;
; outputs:	es:di-	Points at start of date string (LDTOA/xLDTOA).
;		es:di-	Points at zero terminating byte at end of date
;			string (LDTOA2/xLDTOA2 only).
;
; Note: The destination buffer must be large enough to hold the string and
;	zero terminating byte.


		public	sl_xLDTOA
sl_xLDTOA	proc	far
		push	ax
		push	cx
		push	dx

		mov	ah, 2ah			;MS-DOS Get Date opcode
		int	21h			;Go get the system date
		call	far ptr sl_LDTOA	;Convert it to a string.

		pop	dx
		pop	cx
		pop	ax
		ret
sl_xLDTOA	endp


		public	sl_xLDTOA2
sl_xLDTOA2	proc	far
		push	ax
		push	cx
		push	dx

		mov	ah, 2ah			;MS-DOS Get Date opcode
		int	21h			;Go get the system date
		call	far ptr sl_LDTOA2	;Convert it to a string.

		pop	dx
		pop	cx
		pop	ax
		ret
sl_xLDTOA2	endp



		public	sl_LDTOA
sl_LDTOA	proc	far
		push	di
		call	far ptr sl_LDTOA2
		pop	di
		ret
sl_LDTOA	endp

		public	sl_LDTOA2
sl_LDTOA2	proc	far
		assume	ds:stdgrp

		pushf
		push	ds
		push	ax
		push	si
		mov	ax, stdgrp
		mov	ds, ax

		cld
		mov	ah, 0
		mov	al, dh
		mov	si, ax			;Compute Month*3
		shl	ax, 1			;si*2
		lea	si, sld_Months[si]	;si*1 + adrs(Months)
		add	si, ax			;si*3 + adrs(Months)

		lodsb				;Copy three chars of
		stosb				; the month from the
		lodsb				; Months array to the
		stosb				; output string.
		lodsb
		stosb
		mov	al, ' '
		stosb

		mov	al, dl			;Okay, process the day
		call	sl_itoa2		; down here.
		mov	al, ','
		stosb
		mov	al, ' '
		stosb

		mov	ax, cx			;Finish up with the
		call	sl_itoa2		; year at this point.

		pop	si
		pop	ax
		pop	ds
		popf
		ret
sl_LDTOA2	endp

stdlib		ends
		end

⌨️ 快捷键说明

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