999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB的匯編語言集成開發工具設計

2015-07-31 21:13:47張景元
實驗技術與管理 2015年1期
關鍵詞:功能

張景元, 任 菡

(山東理工大學 計算機科學與技術學院, 山東 淄博 255049)

基于VB的匯編語言集成開發工具設計

張景元, 任 菡

(山東理工大學 計算機科學與技術學院, 山東 淄博 255049)

針對匯編程序、連接程序和錯誤調試程序只能在DOS操作系統上運行的缺點,利用可視化軟件開發工具研發了運行于Windows的匯編語言集成開發工具,實現了匯編語言源程序的匯編、連接和調試等功能。全部程序模塊、DLL文件及幫助文檔都集成打包為可安裝的SETUP文件包,便于安裝使用。運行結果證明,軟件功能齊全,界面友好,操作方便。

匯編語言; 集成開發環境; 數據管道; 重定向; API函數

匯編語言是一種面向機器的低級語言,可深入到計算機底層對硬件進行操作。雖然C語言亦可對計算機硬件進行操作,但功能有限,無法替代匯編語言。用匯編語言編寫的程序占用內存空間小、運行速度快,高級語言所能實現的功能,匯編語言皆可以實現,而匯編語言能實現的功能,高級語言則無法全部實現。因此,盡管高級語言的功能越來越強大,開發平臺越來越好,但在用高級語言開發應用軟件時,有時不得不借助于匯編語言編寫某些模塊,或直接將代碼插入其中,或以動態連接庫的形式供其調用。不僅如此,從教學的角度看,通過匯編語言的學習和實踐,才能夠充分了解CPU及其各接口芯片的工作原理、數據傳送方式等。因此,匯編語言仍然是計算機專業的必修課程之一,也是某些專業微機原理課程所涉及的重要內容。

然而自Windows推出以后,關于DOS命令的教材已很少,在教學中對DOS命令的介紹也是簡而又簡,甚至忽略。但EDIT、MASM5.0、LINK、DEBUG等都是基于DOS平臺的,對源程序的編輯、匯編,目標文件的連接、調試等皆分散進行,操作遠不如高級語言集成開發環境方便。為方便教學,筆者開發了運行于Windows平臺的匯編語言集成開發工具軟件IDE(integrated development environment)。

1 設計方案

VB(Visual Basic)是基于Windows的通用開發工具,控件多、種類全、API庫函數豐富,廣泛用于開發大型應用軟件或控制軟件的前臺程序。閆民亮基于VB設計了網絡運行狀態監控程序[1],劉銀、桂曉兵利用VB開發了溫度監控系統的前臺程序[2-3],余文坤、王建軍等將VB用于全球衛星導航系統數據及地形圖數據的處理軟件設計[4-6],文獻[7-8]介紹了VB與Fortran、Matlab混合編程的接口方法,丁蓉則就“VB程序設計”課程的創新性實驗進行了有益的探索[9]。本文將VB用于匯編語言集成開發環境IDE的設計,其中文本編輯器和調試平臺等基于VB實現,將運行于DOS下的Masm、Link 和Debug作為IDE的模塊掛接在后臺運行,利用Windows管道技術和DOS命令重定向技術傳送Masm、Link和Debug調用、運行結果等相關信息。IDE的組成結構如圖1所示。

圖1 IDE組成結構

2 實現過程

2.1 源程序編輯

首先設計實現一個文本編輯器,用來編輯匯編語言源程序文件,它也是呈現給用戶的主要界面,需具備文本編輯的所有功能。在編輯過程中能顯示光標所在的行列位置,能進行復制、剪切、粘貼操作,能打開已有的文件,關閉、保存正在編輯的文件,能新建文件、打印文件等。

編輯窗口利用功能較強的RichTextBo控件產生。調用API函數Process()和SendMessage()捕獲當前光標所在位置的行列值,利用Clipboard.SetText和Clipboard.GetText實現復制、粘貼功能?!安檎摇睂υ捒蚴菫榉奖阈薷亩O,可查找正在編輯的源程序文件中的任何字符。打印源程序文件是利用dlgCommonDialog.ShowPrinter實現的;新建文件、打開文件、保存文件的功能則通過調用公共對話框來實現,保存的文件默認后綴為“.asm”。其他編輯器的選單(菜單)以及各工具按鈕的代碼不一一列出。編輯器運行界面如圖2所示,與Windows風格完全一致。

圖2 編輯器界面

2.2 匯編模塊

匯編過程是通過調用Masm5.0實現的,匯編時自動運行Masm.exe文件,將源程序文件匯編成目標代碼文件,默認后綴為“.obj”,同時將匯編信息顯示在信息框中。通過Shell調用系統內部命令模塊command.com/c(加參數/c以結束調用返回)調用Masm,通過管道“|”對源程序文件進行匯編,匯編結果通過重定向“>>”輸出。Shell函數返回一個進程ID號,再通過OpenProcess函數返回該進程的句柄,若獲得該句柄,調用WaitForSingleObject函數等待結束信號,最后調用CloseHandle關閉句柄。產生輸出文件需要將無用的中間信息刪除,InStr函數為返回源串中指定無用字符串的位置,用Left和Mid函數截去無用的部分。為了顯示美觀,StrConv函數將指定字符串轉換為每個詞頭字母大寫。運行結果如圖3所示。

圖3 運行結果

部分代碼如下:

pId = Shell( ″command.com /c type _ input.txt|masm>output.txt″) pHnd = OpenProcess(SYNCHRONIZE, 0, pId) If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) Call CloseHandle(pHnd) End If Open ″output.txt″ For Input As #1 While Not EOF(1) Line Input #1, S If S <> ″″ Then S = S & vbCrLf res = S Do While InStr(res, ″Source filename [.ASM]:″) i=InStr(res, ″Source filename [.ASM]:″) res=Left(res, i-1) & Mid(res, i + 103) Loop S=res S=StrConv(S, vbProperCase) msgwin.SelColor = &HC00000 msgwin.SelText = S End If Wend

2.3 鏈接過程

將匯編生成的“*.OBJ”類型的目標文件保存為lk.txt文件,lk.txt作為DOS命令下Link程序的管道輸入端,再重定向,將結果輸出到lko.txt文件里,最后將其輸出到文本編輯器的信息窗口中。部分代碼如下:

pId=Shell(″command.com/c type lk.txt|link>lko.txt″) pHnd = OpenProcess(SYNCHRONIZE, 0, pId) If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) Call CloseHandle(pHnd) End If Open ″lko.txt″ For Input As #1 While Not EOF(1) Line Input #1, S If S <> ″″ Then S=StrConv(S, vbProperCase) S=S & vbCrLf msgwin.SelColor = &HC00000 msgwin.SelText = S End If Wend

點擊源程序匯編后的錯誤信息框,會自動高亮顯示對應的錯誤所在行,以便于查找錯誤。匯編、鏈接過程沒有錯誤時,可以運行程序并查看運行結果。

編輯器的選單條中設有一個運行選項,單擊此項可以同時完成匯編、鏈接、運行的全部過程,若存在錯誤,在匯編時就會顯示在信息框中。

2.4 單步、斷點、反匯編

通過調用Microsoft公司的Debug程序實現斷點設置、單步運行調試、反匯編等功能,具體做法是將一連串命令編寫成類似批處理文件的S1.txt文件,然后重定向到文件S1o.txt,最后在信息窗口中顯示出來。斷點同樣利用Debug的參數進行設置,生成單步執行輸入文件,也是用一個類似批處理的文件來實現,用命令“RIP”更改確定開始運行的地址,用變量St輸入開始運行地址,命令“T”單步執行,“Q”退出Debug。部分代碼如下:

MST = ″單步運行″ MD = 0 BK = InputBox(MS, MST, MD, 100, 100) If Len(BK) = 0 Then Exit Sub End If St = CLng(BK) Open ″S1.txt″ For Output As #1 Print #1, ″RIP″ Print #1, St Print #1, ″T″ Print #1, ″Q″ Print #1, ″exit″ Close #1 pId = Shell(″command.com /c type _ S1.txt|debug fm.exe>S1o.txt″) pHnd = OpenProcess(SYNCHRONIZE, 0, pId) If pHnd <> 0 Then Call WaitForSingleObject(pHnd, INFINITE) Call CloseHandle(pHnd) End If Open ″S1o.txt″ For Input As #1 While Not EOF(1) Line Input #1, S

2.5 幫助文檔

一個完整的應用軟件必須有在線幫助功能。本開發工具的具體做法是先將本IDE的使用方法寫成Word文檔,再利用工具軟件轉換成help.chm文件,在選單的幫助按鈕代碼中調用即可。

3 結束語

用打包工具將全部軟件和涉及的DLL文件打包制作成Setup安裝文件,安裝非常簡單。本設計方案既發揮了Windows平臺的優勢,又使典型的“老軟件”得到了充分利用,而管道技術和重定向技術是很好的鏈接橋梁。從幾年的使用情況看,該軟件運行可靠,界面友好,增強了學生的學習興趣,提高了教學質量。

References)

[1] 閆民亮.VB編程在數字化網絡維護中的應用[J].硅谷,2013(18):117-118.

[2] 劉銀,蓋書超,余楠,等.基于VB6.0的在線溫度檢測系統[J].儀表技術與傳感器,2013(8):41-43.

[3] 桂曉兵,王燕昌,楊柳斌,等.基于VB與單片機干燥溫度測控系統的實現[J].貴州農業科學,2013,41(2):170-172.

[4] 余文坤,戴吾蛟,楊哲.基于TEQC的GNSS數據質量分析及預處理軟件的設計與實現[J].大地測量與地球動力學,2010,30(5):81-85.

[5] 王建軍,吳北平,馮健.TEQC和QCVIEW32在GPS觀測數據預處理中的應用[J].工程地球物理學報,2010(7):634-638.

[6] 孟現彪,史雅茹,馮禹,等.應用VB實現地形圖數據格式轉換[J].測繪與空間地理信息,2012,35(10):196-198.

[7] 李險峰.VB和Fortran混合編程在工程計算中的應用[J].鍋爐技術,2011,42(2):62-66.

[8] 馬培勇,羅紅潤,周思柱.基于COM組件的MATLAB和VB混編方法在機械可靠性工程中的應用[J].計算機應用與軟件,2012,29(7):189-191.

[9] 丁蓉,朱琳.“VB程序設計”課程的創新性實驗教學[J].實驗技術與管理,2012,29(8):163-165.

Design of integrated development tool of assembly language based on VB

Zhang Jingyuan, Ren Han

(College of Compute Science and Technology , Shandong University of Technology, Zibo 255049, China)

Aiming at the weakness of movement of editing collected material procedures, linking procedures, and mistaking to adjust the procedures, which can only operate on the DOS operation system, the exploitation can see to turn a software development tool to develop the language integrated development tool of editing collected materials of Windows. This article describes how to realize the functions of the source procedure editing, conjunction, and adjustment. All procedure modules, DDL documents and the help text files can integrate to pack to wrap for the SETUP document which can be installed, and easy to gearing use. The operational results show that the software function is well-found, the interface is friendly, and the operation is convenient.

assembly language; integrated development environment; data piping; redirection; API function

2014- 06- 10

張景元(1955—),男,山東濟南,工學碩士,教授,研究生導師,主要研究方向為人工智能、模式識別和智能控制等.

P273.4

A

1002-4956(2015)1- 0142- 03

猜你喜歡
功能
拆解復雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
當代陜西(2021年21期)2022-01-19 02:00:26
深刻理解功能關系
鉗把功能創新實踐應用
關于非首都功能疏解的幾點思考
基于PMC窗口功能實現設備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 黄色a一级视频| 国产av色站网站| 992tv国产人成在线观看| 亚洲国产综合自在线另类| 在线观看视频99| 色婷婷综合在线| 玖玖精品在线| 国产在线自乱拍播放| 国产91蝌蚪窝| 无码粉嫩虎白一线天在线观看| 午夜久久影院| 99re在线视频观看| 久久精品aⅴ无码中文字幕| 激情视频综合网| 亚洲男人的天堂久久香蕉网| 亚洲九九视频| 国产农村妇女精品一二区| 日本一区二区三区精品视频| 亚洲婷婷丁香| 在线观看欧美国产| www亚洲精品| 欧美丝袜高跟鞋一区二区 | yjizz国产在线视频网| 强乱中文字幕在线播放不卡| 亚洲激情区| 亚洲精品国产精品乱码不卞| 国产在线精彩视频二区| 国产交换配偶在线视频| 强乱中文字幕在线播放不卡| 无码在线激情片| 亚洲人成人无码www| 天天爽免费视频| 亚洲精品无码AV电影在线播放| 成人久久18免费网站| 国内精品久久人妻无码大片高| 真实国产乱子伦高清| 丝袜久久剧情精品国产| 中文字幕第4页| 无码日韩人妻精品久久蜜桃| 国产成人高清精品免费软件| 日韩精品中文字幕一区三区| 日韩人妻少妇一区二区| 精品无码一区二区三区电影| 亚洲国模精品一区| 天天综合网色| 成人一级免费视频| 激情综合婷婷丁香五月尤物 | 91原创视频在线| 亚州AV秘 一区二区三区| 亚洲毛片在线看| 天天做天天爱夜夜爽毛片毛片| 永久免费无码成人网站| 一级毛片免费不卡在线| 人妻无码中文字幕第一区| 色偷偷男人的天堂亚洲av| 999福利激情视频 | 伊人五月丁香综合AⅤ| 一本二本三本不卡无码| 福利小视频在线播放| 四虎成人精品在永久免费| 欧美黑人欧美精品刺激| 国产福利小视频高清在线观看| 青青草原国产| 丰满少妇αⅴ无码区| 99热这里只有精品久久免费| 亚洲欧美一级一级a| 亚洲国产精品无码久久一线| 久久国产精品波多野结衣| a级免费视频| 国产成人乱无码视频| 伊人久久久久久久久久| 欧美日韩免费观看| 国产v精品成人免费视频71pao| 波多野结衣在线一区二区| 日韩欧美综合在线制服| 原味小视频在线www国产| 国产成人毛片| 欧美日韩中文国产| 波多野结衣二区| 久久香蕉欧美精品| 91国内外精品自在线播放| 日本高清有码人妻|