清华大学出版社 TSINGHUA UNIVERSITY PRESS 例:编写一段显示字符串 STRING的程序 DATA SEGMENT STR|NGDB‘ HAPPY NEWYEAR!’,0DH,0AH,$ COUNT DW 17 DATA ENDS [字符串存储情况 (1)直接寻址 mov dl, string mov ah. 2 t2lh(P335) ;显示字符“H mov dl, string+1 mov ah, 2 int 21h ;显示字符“A
例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB ‘ HAPPY NEW YEAR! ’, 0DH , 0AH , ‘ $ ’ COUNT DW 17 DATA ENDS [字符串存储情况] ( 1 ) 直接寻址 mov dl, string mov ah, 2 int 21h (P335) ; 显示字符‘H’ mov dl, string+1 mov ah, 2 int 21h ; 显示字符‘A’ : :
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)寄存器间接寻址 mov Cx, count mov Cx,17 mov bx, offset string; stringl的偏址→bx Next: mov dl, [. moy ah. 2 int 21 h ;显示一个字符 nc bx loop next 循环指令 (3)寄存器相对寻址 mov Cx. count mov Cx.17 mov si. 0 Next: mov dl, string[si] mov dl, [string +si] moy ah, 2 int 21h ;显示一个字符 Inc si loop next 循环指令
( 2 ) 寄存器间接寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 → bx Next : mov dl, [bx] mov ah, 2 int 21h ; 显示一个字符 inc bx loop next ; 循环指令 ( 3 ) 寄存器相对寻址 mov cx, count ; mov cx, 17 mov si, 0 Next : mov dl, string[si] ; mov dl, [string+si] mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令
清华大学出版社 TSINGHUA UNIVERSITY PRESS (4)基址变址寻址 mov Cx. count mov Cx.17 moy bx, offset string; string的偏址→bx moy si. 0 Next: mov dl, [bx] [si] mov dl, [bx +si] moy ah, 2 int 21h ;显示一个字符 Inc s loop next ;循环指令 (5)DOS显示字符串功能 mov dx, offset string; string的偏址→dx lea dx, string mov ah. 9 int 21h ;显示一串字符
( 4 ) 基址变址寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 → bx mov si, 0 Next : mov dl, [bx] [si] ; mov dl, [bx+si] mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令 ( 5 ) DOS 显示字符串功能 mov dx, offset string ; string的偏址 → dx ; lea dx, string mov ah, 9 int 21h ; 显示一串字符
清华大学出版社 TSINGHUA UNIVERSITY PRESS 80x86新增的寻址方式 EA=(基址寄存器)+(变址寄存器)x比例因子+位移量 (1)比例变址寻址方式 v]: MOV EAX, COUNT I ESI 4 存储器 OUNT +1 元素0 2345 EAX 元素1 +8 9 +10 元素2 +12 13 14 元素3 +15 +16
80x86 新增的寻址方式 EA= (基址寄存器) + (变址寄存器) 比例因子+ 位移量 ( 1 ) 比例变址寻址方式 例:MOV EAX, COUNT [ ESI 4 ]
清华大学出版社 TSINGHUA UNIVERSITY PRESS (2)基址比例变址寻址方式 3: MOV ECX, IEAX JIEDI*41 (3)相对基址比例变址寻址方式 例: MOV EAX, TABLE LEBPILEDⅠ*4 ▲16位和32位寻址的差异 地址成分16位寻址 32位寻址 基址寄存器 BX、BP 任何32位通用寄存器 变址寄存器 SI、DI 除ESP外的任何32位通用寄存器 比例因子 1、2、4、8
(2) 基址比例变址寻址方式 例:MOV ECX, [ EAX ][ EDI 4 ] (3) 相对基址比例变址寻址方式 例:MOV EAX, TABLE [ EBP ][ EDI 4 ] ▲ 16位和32位寻址的差异 地址成分 16位寻址 32位寻址 基址寄存器 BX、BP 任何32位通用寄存器 变址寄存器 SI、DI 除ESP外的任何32位通用寄存器 比例因子 1 1、2、4、8