程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 匯編源碼系列之basload

匯編源碼系列之basload

編輯:匯編語言

這個都是過去DOS時代的匯編源碼,雖然已經過去了,但是對於學習匯編還是有幫助的,匯編語言只是程序員一門基礎語言,大多人掌握即可,不一定要深入研究.......

;BASLOAD.ASM   07/09/84 - DKeels
;----------------------------------------------------------------------------
;This program provides BASIC programs with access to the program loader (LOAD)
;by passing parameters via the system parameter area (SYSPARM).
;
;Inputs:
; FILE SPEC 1  - A string (len <= 80) with the complete name, including
;     path, of the file to be loaded and executed.
;     Example: 'MAINMENU.EXE' or 'C:FORMAT.COM'
; PARAMETER 1 - A string (len <= 80) with the command line parameters
;     to be passed to the program specified in FILE SPEC 1.
;     Example: '' or 'A:'
; FILE SPEC 2 - Same as 1.
; PARAMETER 2 - Same as 1.
;
;Outputs:
; This program gives control to LOAD.
;----------------------------------------------------------------------------
CODE    SEGMENT 'CODE'
    ASSUME  CS:CODE
    PUBLIC  BASLOAD    ;make known to BASIC at link time
BASLOAD    PROC  FAR
  ;prologue
    PUSH  BP    ;save BP
    MOV  BP,SP    ;set base for parm list
    PUSH  DS    ;DS -> basic work area
    PUSH  ES    ;ES -> basic work area
    MOV  DX,'dk'    ;interrupt verification switch
    INT  77H    ;get seg address of sysparm area in AX
    MOV  ES,AX    ;ES -> sysparm area
    CLD      ;set direction for all moves
  ;move file spec 1 to sysparm
    MOV  BX,SS:[BP+12]  ;get addr of string descriptor
    MOV  CX,DS:[BX]  ;get length of string into CX
    MOV  SI,DS:[BX+2]  ;get addr of string into SI
    MOV  DI,0    ;offset into sysparm
    REP  MOVSB    ;move string
    MOV  BYTE PTR ES:[DI],0  ;make it asciiz string
  ;move parameter 1 to sysparm
    MOV  BX,SS:[BP+10]  ;get addr of string descriptor
    MOV  CX,DS:[BX]  ;get length of string into CX
    MOV  SI,DS:[BX+2]  ;get addr of string into SI
    MOV  DI,81    ;offset into sysparm
    INC  CL    ;adjust for cr to be added at end
    MOV  BYTE PTR ES:[DI],CL  ;1st byte is length of string
    DEC  CL    ;re-adjust for move operation
    INC  DI
    REP  MOVSB    ;move string
    MOV  BYTE PTR ES:[DI],13  ;add cr to end
  ;move file spec 2 to sysparm
    MOV  BX,SS:[BP+8]  ;get addr of string descriptor
    MOV  CX,DS:[BX]  ;get length of string into CX
    MOV  SI,DS:[BX+2]  ;get addr of string into SI
    MOV  DI,163    ;offset into sysparm
    REP  MOVSB    ;move string
    MOV  BYTE PTR ES:[DI],0  ;make it asciiz string
  ;move parameter 2 to sysparm
    MOV  BX,SS:[BP+6]  ;get addr of string descriptor
    MOV  CX,DS:[BX]  ;get length of string into CX
    MOV  SI,DS:[BX+2]  ;get addr of string into SI
    MOV  DI,244    ;offset into sysparm
    INC  CL    ;adjust for cr to be added at end
    MOV  BYTE PTR ES:[DI],CL  ;1st byte is length of string
    DEC  CL    ;re-adjust for move operation
    INC  DI
    REP  MOVSB    ;move string
    MOV  BYTE PTR ES:[DI],13  ;add cr to end
  ;exit to BASIC
    POP  ES
    POP  DS
    POP  BP
    RET  8
BASLOAD    ENDP
CODE    ENDS
    END  BASLOAD


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved