不一樣的尋址方式

一、8086的尋址方式編程

  • [idata]用一個常量來表示地址,可用於直接定位一個內存單元
  • [bx]用一個變量來表示內存地址,可用於間接定位一個內存單元
  • [bx+idata]用一個變量和常量表示地址,可在一個起始地址的基礎上用變量間接定位一個內存單元
  • [bx+si]用兩個變量表示地址
  • [bx+si+idata]用兩個變量和一個常量表示地址。

 

編程,將datasg段中的每一個單詞改成大寫字母。數組

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

datasg segment
       db  'ibm             '
       db  'dec             '
       db  'dos             '
       db  'vax             '
datasg ends

stacksg segment stack
        dw 0,0,0,0,0,0,0,0
stacksg ends

codesg segment

start:
               mov ax,stacksg
               mov ss,ax
               mov sp,16
               mov ax,datasg
               mov bx,0

               mov cx,4
s0:
                push cx              ;將外層循環的cx值壓棧
                mov si,0
                mov cx,3
s:
                mov al,[bx+si]
                and al,11011111b
                mov [bx+si],al
                inc si
                loop s

                add bx, 16
                pop cx
                loop s0    

                mov ax,4c00H
                int 21H
codesg ends

end start

 

二、尋址方式分類oop

  • 直接尋址                        [idata]
  • 寄存器間接尋址               [bx]
  • 寄存器相對尋址               用於結構體:[bx].idata, 用於數組idata[si],idata[di],用於二維數組[bx][idata]
  • 基址變址尋址                  用於二維數組:[bx][si]
  • 相對基址變址尋址            用於表格(結構)中的數組項:[bx].idata[si] ,用於二維數組:idata[bx][si]
相關文章
相關標籤/搜索