assume cs:code,ds:data,es:table,ss:stack
data segment
db '1990','1991','1992','1993','1994','1995','1996','1997','1998','1999','2000'
db '2001','2002','2003','2004','2005','2006','2007','2008','2009','2010' ;最近21年的年份
;計算年份的偏移位址 4*21=84 十六進製制54h用53h
dd 116,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,5840 ;21年每年的收入
;計算收入的偏移位址 54h+54h=a8h 用a7h
dw 1,6,9,12,113,6,9,12,113,6,9,12,113,6,9,12,113,6,9,12,50 ;21年每年的人數
;計算人數的偏移位址 a8h+2a=d2 用d1
data ends
table segment
db 21 dup('year summ ne !! ')
table ends
stack segment
dw 8 dup('0')
stack ends
code segment
start: mov ax, data
mov ds, ax ;將ds和data掛鉤
mov ax, table
mov es, ax ;將es和table掛鉤
mov bx, 0 ;初始化引數
mov si, 0
mov di, 0
mov cx, 21 ;設定迴圈次數21次
s: mov al, ds:[bx] ;存放年份
mov es:[di], al
mov al, ds:[bx+1]
mov es:[di+1], al
mov al, ds:[bx+2]
mov es:[di+2], al
mov al, ds:[bx+3]
mov es:[di+3], al
mov ax, [bx+54h] ;存放收入
mov dx, [bx+56h]
mov es:[di+5h], ax
mov es:[di+7h], dx
mov ax, [si+0a8h] ;存放人數
mov es:[di+0ah], ax
mov ax, [bx+54h] ;存放人均收入
mov dx, [bx+56h]
div word ptr ds:[si+0a8h]
mov es:[di+0dh], ax
add bx, 4
add di, 16
add si, 2
loop s
mov ax, 4c00h
int 21h
code ends
end start
彙編 更靈活的定位記憶體位址
and 按位與 or 按位或 db unix db 75h,6eh,49h,58h 大小寫轉換 第5位置0,變大寫,第5位置1,變小寫 assume cs codesg,ds datasg datasg segment db bssic db minix datasg ends codesg seg...
彙編 7 1 靈活定位記憶體位址的方法
1.bx idata 我們用 bx 的方式來指明乙個記憶體單元,還可以用一種更靈活的方式來指明記憶體單元 bx idata 表示乙個記憶體單元,它的偏移位址為 bx idata bx中的數值加上idata 如 mov ax,bx 200 數學化的描述為 ax ds 16 bx 200 2.用 bx ...
and or 字元型資料 靈活定位記憶體位址
and用來摳0 or用來填1 al第6位設為0的方法是 and al,10111111b al第7位設為0的方法是 and al,01111111b 用單引號寫的字元型資料 unix 在編譯的時候 會被轉化為相應的ascii碼 字母a的ascii碼是 41h 也就是65 01000001 小寫字母的...