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

了解匯編命令行參數

編輯:匯編語言

在dos下帶命令行執行程序是常有的事,在windows下也是如此,如何正確的從命令行提取需要的數據,首先必須了解命令行。本程序就是用來分析命令行參數的。

---------------------------------------------------------------
;文件名:14.asm
;取命令行參數並顯示,用於分析命令行參數可能出現的情況
     .386
     .model flat,stdcall
     Option CaseMap:none
include windows.inc
include kernel32.inc
include user32.inc
include masm32.inc
includelib kernel32.lib
includelib user32.lib
includelib masm32.lib
     .data
szCaption  db "GetCommandLine",0
Fg     db ' ',0        ;空格(分隔符)
Crlf    db 13,10,0       ;回車換行
     .data?
Temp    db 10 dup(?)      ;用來臨時存放數據
OutString  db 600 dup(?)      ;存放輸出字符串
     .code
start:
     invoke GetCommandLine          ;取命令行參數
     mov esi,eax
     invoke lstrcat,addr OutString,eax    ;合並字符串
     invoke lstrcat,addr OutString,addr Crlf
     invoke lstrlen,esi           ;取字符串長度
     mov ecx,eax
     cld
L1:
     push ecx
     xor eax,eax
     lodsb
     invoke dw2hex,eax,addr Temp
     invoke lstrcat,addr OutString,addr Temp+6
     invoke lstrcat,addr OutString,addr Fg
     pop ecx
     loop L1
     invoke MessageBox,NULL,addr OutString,addr szCaption,MB_OK
     invoke ExitProcess,NULL
     end start
---------------------------------------------------------------

程序執行的結果:

1、編譯成console後在dos提示符下執行

2、編譯成windows後在dos提示符下執行

3、編譯成console/windows後創建可執行文件的快捷方式,設立命令行參數

4、不帶任何參數

---------------------------------------------------------------

結論:

1、命令行上可有多個數據項

2、各個數據項用一個或多個空格或制表符分隔

3、第一個數據項代表當前執行的程序名

4、第一個數據兩邊可能有雙引號,也可能沒有

5、引號內的程序名串中間可能有空格

6、若不帶任何參數,則最後一個字符總是空格

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