當前位置:首頁 » 服務存儲 » 一存儲單元的偏移地址是BX
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

一存儲單元的偏移地址是BX

發布時間: 2023-02-03 22:27:39

Ⅰ 匯編語言[bx+si]和[bx+di]方式定址

[bx+si]和[bx+di]方式指定地址

[bx+si]表示一個內存單元

    偏移地址為(bx)+(si)(即bx中的數值加上si中的數值)

指令mov ax,[bx+si]的含義

    將一個內存單元的內容送入ax

    這個內存單元的長度為2個位元組(字單元),存放一個字

    偏移地址為bx中的數值加上si中的數值

    段地址在ds中

指令 mov ax,[bx+si]的數學化的描述

    (ax) = ((ds)*16 + (bx)+(si))

其他寫法mov ax,[bx+si]其他寫法

    mov ax,[bx][si]

應用案例

    在內存中數據2000:1000 BE 00 06 00 00 ........

    程序執行後ax bx cx中內容。

mov ax,2000H

mov ds,ax

mov bx,1000H

mov si,0

mov ax,[bx+si]

inc si

mov cx,[bx+si]

inc si

mov di,si

mov ax,[bx+di]

[bx+si+idata]和[bx+di+idata]

[bx+si+idata]表示一個內存單元

    偏移地址為(bx)+(si)+idata j即bx中的數值加上si中的數值加上idata

指令 mov ax,[bx+si+idata]的含義

    將一個內存單元的內容送入ax

    這個內存單元的長度為2個位元組(字單元),存放一個字

    偏移地址為bx中的數值加上si中的數值再加上idata,段地址在ds中

數學化描述

    (ax) = ((ds)*16 + (bx)+(si)+idata)

指令mov ax,[bx+si+idata]的其他寫法

    mov ax,[bx+200+si]   mov ax,[bx].200[si]

    mov ax,[200+bx+si]   mov ax,[bx][si].200

    mov ax,200[bx][bx]   mov ax,[bx][si]

對內存的定址方式

assume cs:code,ds:data

data segment

    db '1. file         '

    db '2. edit         '

    db '3. search       '

    db '4. view         '

    db '5. options      '

    db '6. help         '

data ends

code segment

start:

        mov ax,data

        mov ds,ax

        mov bx,0

        mov cx,6

     s1:mov al,[bx+3]

        and al,11011111b

        mov [bx+3],al

        add bx,16

        loop s1

        mov ax,4c00h

        int 21h

code ends

end start

; 可以看成一個數組6*16

; 因為每個單詞的開頭字母都是在每一行的第三個,利用[bx+idata]方式

assume cs:codesg,ds:datasg,ss:stack

datasg segment

    db 'ibm             '

    db 'dec             '

    db 'dos             '

    db 'vax             '

datasg ends

stack segment

    dw 0,0,0,0,0,0,0,0,0,0,0,0

stack ends

codesg segment

start:

        mov ax,stack

        mov ss,ax

        mov sp,16

        mov ax,datasg

        mov ds,ax

        mov bx,0

        mov cx,4

     s2:push cx ;將外層循環的值賦值給4

        mov si,0

        mov cx,3

     s1:mov al,[bx+si]

        and al,11011111b

        mov [bx+si],al

        inc si

        loop s1

        add bx,16

        pop cx

        loop s2

        mov ax,4c00h

        int 21h

codesg ends

end start

; 將dataseg段中每個單詞改寫為大寫字母

; 利用棧的形式去存儲 目前是最安全的.

Ⅱ 匯編語言中[BX]表示什麼

bx代表一個寄存器,[bx]代表一個內存地址,段地址默認在ds中,偏移地址在bx中,即ds:bx。一般[bx]做變數使用。有什麼問題加q討論,我也是匯編愛好者。qq:7234801