例:编写一段显示字符串 STRING的程序 DATA SEGMENT STRING DB‘ HAPPY NEWYEAR!’,0DH,0AH,"$ COUNT DW 1 DATA ENDS (1)直接寻址 mov dl, string moy ah. 2 int 21h 显示字符H mov dl, string+1 mov ah. 2 int 21h ;显示字符A
11 例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB ‘ HAPPY NEW YEAR! ’, 0DH , 0AH , ‘ $ ’ COUNT DW 17 DATA ENDS ( 1 ) 直接寻址 mov dl, string mov ah, 2 int 21h ; 显示字符‘H’ mov dl, string+1 mov ah, 2 int 21h ; 显示字符‘A’ : :
(2)寄存器间接寻址 mov Cx. count mov Cx, 17 moy bx, offset string; string的偏址→bx Next: mov dl, [bx moy ah 2: int 21h 显示一个字符 inc bx loop next 循环指令 (3)寄存器相对寻址 mov cx. count mov Cx,17 mov si Next:: mov dl, string[si] mov dl, [string +si mov ah, 2 nt 21 h ;显示一个字符 nc SI loop next 循环指令
12 ( 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 ; 循环指令
(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] mov ah, 2 int 21h ;显示一个字符 nc loop next 循环指令 (5)DOS显示字符串功能 mov dx, offset string; string的偏址→dx lea dx, string mov ah, 9 int 21h ;显示一串字符
13 ( 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 ; 显示一串字符
2.与转移地址有关的寻址方式: 用来确定转移指令及转子指令的转向地址 段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLEIBX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTRIBX
14 2. 与转移地址有关的寻址方式: • 段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE [ BX ] • 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR [ BX ] 用来确定转移指令及转子指令的转向地址
(1)段内直接寻址 转向的有效地址=当前(P)+位移量8bit6bi JMP SHORT NEXT MOV AX. o MOV BX. O MOV CX. O SNEXT: ret 2A2:0005/EB09 JMP 0010 2A2(0007B80000 MOV AX,0000 2A2:000ABB0000 MOV BX,0000 2A2:000DB90000 MOV CX,0000 2A2:0010CB RETF
15 (1) 段内直接寻址 转向的有效地址 = 当前(IP) + 位移量(8bit/16bit)