彙編學習筆記(一): hello world!
記:
剛剛開始學習彙編,作下筆記,怕日後忘記
data segment ; 定義資料段
string db 'hello world!','$'
; db(define byte)用來定義一段記憶體資料 位元組為單位 是偽指令
data ends
code segment ; 定義**段
assume cs:code, ds:data ; 將段與暫存器關聯
; 具體意思不詳
start:
mov ax, data ; 拿到資料段的段位址
mov ds, ax ; 將段位址賦給ds段暫存器
lea dx, string ; 拿到string在資料段中
; 的偏移量
mov ah, 09h ; 功能號 09h在螢幕輸出
; 以'$'結尾的字串
int 21h ; dos功能呼叫
mov ah, 4ch ; 功能號 4ch 返回到dos
int 21h ; dos功能呼叫
code ends
end start ; 彙編編譯程式遇到end就
; 不往下編譯了
int 21h的dos功能呼叫 顯示字串時 以ds:dx作為字串的起始位址,以』$'作為結束
db 就相當於宣告一下後面的內容依次放到一塊連續的記憶體中 偏移量就是db前面的標示符
在 db中還可以用dup來宣告一塊記憶體 eg: 10 dup(0) 意思是定義一塊10個位元組的記憶體 並用0來初始化 如果(?)則說明不初始化
**中的 string是個變數 但是對編譯器來說它就是個位址, 如果直接用mov ax, string的話 那拿到的是sting這個位址處的內容(ax的話則拿到兩個位元組的內容, eax的話則拿到四個位元組的內容, al或ah的話則拿到1個位元組的內容), 想拿到string這個變數的本身的值(即位址)則需要用mov ax, offset string 或者 lea ax, string來獲取
eg:data segment
string1 db 『string1$』
string2 db 『string2$』
data ends
assume ds:data
編譯器編譯後 string1 即為 ds:0000
string2 即為 ds:0008 (因為 'string1$'是8個位元組)
所以此時用 mov ax, string1 則是到 ds:0000處取2個位元組的值
StrutsII學習筆記 HelloWorld
配置myeclipse 7.5 struts.xml檔案拷貝到src檔案下 配置如下 hello.jsp web.xml增加過濾器 struts2 org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter 新增inde...
grails學習筆記之二 Hello World
第一部分 建立乙個空白專案 4.grails會自動生成專案框架檔案,並且可以執行。6.在瀏覽器中輸入 如果能看到歡迎介面就是成功了。第二部分 了解grails專案目錄結構 如下圖所示 至於各個目錄的作用,存放哪些東西就不細說了。第三部分 helloworld 1.建立乙個controller,鍵入 ...
彙編學習筆記
1 cpu的指令集 cpu內整合了不同功能的電路模組 如 加 減法器,比較器 正常工作所對應的不同高低電平 數電知識 組合語言是人對機器指令的語言表述。2 cpu對硬體的控制實際是訪問其記憶體 如顯示卡上整合有ram 視訊記憶體 和rom 裝有唯讀bios 源 被編譯成機器 後被載入記憶體。3 程式...