(2011.11.1.01)アセンブル_王爽_第09章_勉強のまとめ



(2011.11.1.01)アセンブル_王爽_第09章_勉強のまとめ
この章の内容:
1.転送命令——CSとIPを同時に修正する命令の総称.
2.セグメント内転送——IPのみ修正
——短い転送——IP修正範囲は-128から127である.
——近接転送——IP修正範囲は-32768~32767
3.セグメント間転送——同時にCSとIPを修正する
4.offset機能は、符号を取得するオフセットアドレスである.
5.jmp無条件転送命令は、IPのみを修正してもよいし、CSとIPを同時に修正してもよい
6.jmp short符号[IP]jmp near符号[IP]jmp far符号[CS:IP]jmp 16ビットのreg[IP]
7.jmp word ptrメモリセルアドレス(セグメント内転送)jmp dword ptrメモリセルアドレス(セグメント間転送)
8.jcxz符号((cx)=0の場合、符号に移行して実行します.)
 
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 
;     :  9_      _               .asm

;     :           、    、        'Welcome to masm'

 

;     :

;     ,    80 * 25            ,B8000H - BFFFFH   32KB    。

;    :           ,               。

;        25 ,  80   ,      256   (   ,   ,  ,       )

;     80   , 160   。

;              ,(   )       ASCII ,(   )         。

;  :

;  B8000H B8F9FH    (25 ,9+F=25-1),  ,     000 - 09F           ,(9F = 10 * 16 - 1)

;       :

;               7  6  5  4  3  2  1  0

;               BL R  G  B  I  R  G  B

;        1       :BL(7):  ,(654)  ,I(3)  ,(210)   ,R(4,2)  ,G(5,1)  ,B(6,0)  .

;   :

;           DOS       。

 

;     :

;     ,               B8000H - BFFFFH       。

;   ,      mov   ,  loop  。

 

assume cs:code, ds:data

 

;        ,          

data segment

    db 'welcome to masm!'

data ends

 

;        ,           

code segment

start:

    mov ax, data       ;         

    mov ds, ax

 

    mov al, 8          ;      

    mov ah, 12

    mov es, ax

    

    mov bx, 31          ;            , 

    add bx, 384         ;  

    mov si, 0           ;    80   ,     15   

    mov di, 0           ;         ,      40,       

                        ;     ,   40 - 7 = 33, 33 - 1 = 31

                        ;  1  ,    

    mov cx, 15          ;      

    ;    'welcome to masm!'              

putcharin:

    mov al, ds:[si]     ;     

    mov es:[bx+di], al

    inc di

    

    ;         ,             ,              

    cmp si, 7

    jae near ptr c7     ; >=7 ,  C7

    

c0: 

    mov al, 01000000B   ;   

    

    jmp near ptr endloop

 

c7:

    cmp si, 11

    jae near ptr c11

    

    mov al, 00100100B   ;     

       

    jmp near ptr endloop

    

c11:

    mov al, 01110001B       ;     

 

endloop:

    mov es:[bx + di], al

    inc si

    inc di

    loop putcharin

    

    mov ax, 4c00h

    int 21h

code    ends

end start