庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>汇编语言>相关源码>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

汇编的的各类源码--basmain

 作者:本站收集   日期:2005-8-1 15:39:29
字号选择〖 〗/ 双击滚屏 单击停止   
extrn	$$main:far
cseg	segment para public 'code'


; This program is used to set the PSP address for a compiled BASIC program.
; The PSP segment is saved at 0:4F2H.

; It can also be used to limit the maximum memory available to a compiled
; BASIC program. The option '/M:nnn' is used on the command line, where
; nnn is the number of K-bytes the program is limited to. If no, /M option
; is specified, no memory limitation takes place. For example, '/M:64' would
; limit the program to 64*1024 bytes. The range for nnn is 64 to 1024.

; This routine gets control before BASIC, does its handiwork, and then
; passes control to the BASIC program. It must be linked as follows:
; LINK BASMAIN+yourprog,yourprog,NUL.MAP,BASCOM

; If BASMAIN is unable to limit memory as requested, a message is displayed
; and the execution of the program is continued.

public	basmain
basmain proc far
	assume cs:cseg,ds:cseg,ss:nothing,es:nothing

	push ds 		; save ds
	xor ax,ax
	mov ds,ax		; ds=0
	mov si,4f2h		; dos communications area
	mov ax,es		; get psp seg
	mov [si],ax		; save psp in dos comm area
	pop ds			; restore ds
	mov si,80h		; point to command line
	mov ch,0
	mov cl,[si]		; get length of command line
	jcxz p025		; it's zero

p010:	inc si
	mov al,[si]		; get char from command line
	cmp al,'/'              ; is it a slash?
	jnz p020		; no
	mov ax,[si+1]		; get next 2 chars
	cmp ax,':M'             ; is it M: ?
	jz p030 		; yes
	cmp ax,':m'             ; is it m: ?
	jz p030 		; yes

p020:	loop p010		; check next char
p025:	jmp p080		; no /m: or /M: found

p030:				; found /m: or /M:
	add si,3		; point to first number
	mov ax,0
	mov bx,0
	mov cx,10
p040:	mov bl,[si]		; get character
	cmp bl,'0'              ; out of range?
	jb p050 		; yes
	cmp bl,'9'              ; out of range?
	ja p050 		; yes
	sub bl,'0'              ; convert to binary
	mul cx			; multiply ax by 10
	add ax,bx		; add new digit
	inc si			; point to next char
	jmp p040		; continue

p050:				; got value in ax
	cmp ax,64		; less than 64K?
	jb p060 		; yes - print msg
	cmp ax,1024		; greater than 1024K?
	ja p060 		; yes - print msg
	mov cl,6
	sal ax,cl		; convert from KB to paragraphs (*64)
	mov bx,es		; get psp
	add bx,ax		; new top of memory
	mov si,2		; point to top of memory in psp
	mov ax,[si]		; get current top of memory
	cmp ax,bx		; is new setting larger?
	jae p055		; no
	mov dx,offset msg2	; yes - print msg
	jmp p065

p055:	mov [si],bx		; save new top of memory
	jmp p080

p060:	mov dx,offset msg1	; print the message
p065:	add dx,100h		; fudge for the psp
	mov ah,9
	int 21h

p080:	jmp $$main		; jump to BASIC's start point

msg1	db 'Memory specification must be from 64 to 1024',7,10,13,'$'
msg2	db 'Unable to limit memory',7,10,13,'$'

basmain endp
cseg	ends
end	basmain 		; must be a main program!

上一篇:汇编的的各类源码--break    下一篇:汇编的的各类源码--basload  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-8-1 15:39:29
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿