發表文章

目前顯示的是 1月, 2018的文章

組合語言 Assembly Language

 組合語言 Assembly Language 1. ds=2300h , bx=0200h ,那麼執行 mov ax,[bx] 指令後就會把 2300:0200 記憶體的資料取出 2byes 並存入 ax 2. SP 是堆疊指標,當使用 push 指令時, sp 會加 2 ,而執行 pop 時 sp 會減 2 3. data. pas0 db 'ABCD' pas2 db 'EFGH'   ; 假設資料段,是如此定義了兩個變數         ; pas0 位址的內含值是 'A' , pas0+1 的內含值是 'B'        ; pas0+2 位址的內含值是 'C' , pas0+3 的內含值是 'D'    ; pas0+4 位址的內含值是 'E' 也是等於 pas2 的內含值是 'E'    ; 這個地方非常的奧秒吧,為什麼 [pas0+4]=[pas2] 的值    ; 因為 'D' 的下一位址就是 'E' 4. 置放堆疊的記憶體區塊的 位址 ,就是 SS:SP 暫存器所指的位址 (1).PUSH :將 sp 的值減 2 ,然後在將指定要放入堆疊的運算元存入 ss:[sp] (2).POP :將 ss:[sp] 的值取出,並放入所指定的運算元內,然後 sp 的值加 2 jmpi jmpi  go,INITSEG jmpi为段间跳转指令 執行這條指令之後 CS = INITSEG IP = go db 前要加jmp org 100h jmp main msg db 'hello','$' main: ;your code ret 輸入字元 ah=01h return al ex: mov ah,01h int 21h ;al = [intput char] 輸出字元 al => result status ex: mov ah,01h