• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >汇编语言 > 汇编源码系列之basmain

汇编源码系列之basmain

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2017-06-28

匿名通过本文主要向大家介绍了汇编源码,易语言反汇编源码,win7用远程汇编源码,反汇编源码,易语言汇编源码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
</div>

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究.......

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!


</div> </div> </div> </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 汇编源码系列之inthand
  • 汇编源码系列之cdcheck
  • 汇编源码系列之cldoc12
  • 汇编源码系列之basload
  • 汇编源码系列之basmain
  • 汇编源码系列之brk2
  • 汇编源码系列之cleanf
  • 汇编源码系列之charop
  • 汇编源码系列之sertype
  • 汇编源码系列之comint

相关文章

  • 2017-06-28汇编源代码之一个旋转的3D箱子(动画)
  • 2017-06-28汇编源代码之MAKE SOUNDS(发声)
  • 2017-06-28汇编教程:ODBC基础
  • 2017-06-17程序直接控制I/O方式
  • 2017-06-28内存映射文件原理及实例
  • 2017-06-17打印I/O
  • 2017-06-28汇编源码系列之getspace
  • 2017-06-17中央处理机CPU的组成
  • 2017-06-28“HELLO,WORLD”进阶汇编程序系列
  • 2017-06-28汇编源码系列之dossym

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • V86模式切换程序
    • 8086指令系统
    • 汇编语言的艺术-观念正误(二)
    • 80x86寻址方式
    • 虚拟设备驱动程序初步
    • 汇编中使用打开对话框
    • I/O设备的数据传送方式
    • 8086的寻址方式
    • FASTREBOOT V1.0
    • masm中宏指令的bug

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有