Win32编语言-寻址方式.ppt

宋军 计算机学院信息安全系 songjun@cug.edu.cn 寻址方式 操作数的寻址方式 立即数寻址 寄存器寻址 存储器寻址 直接寻址 间接寻址 相对寻址 立即数寻址 操作数在指令中给出 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, ‘A’ 只能用于 SRC 字段 MOV 40H, AL ? SRC 和 DST 的字长一致 MOV AH, 3064H ? 32位存储器寻址有效地址 其中: 位移量是8/16/32数值或者常量 任何32位通用寄存器都可以作为基址寄存器(默认ESP/EBP使用SS;其他默认使用DS) 任何除ESP之外的32位通用寄存器都可以作为变址寄存器 直接寻址方式 例:MOV AX, [ 2000H ] EA=2000H, 假设(DS)=3000H, 那么PA=32000H 直接寻址方式 可使用段跨越前缀 MOV AX, ES: [2000H] 操作数地址可由变量(符号地址)表示, 但要注意 VALUE DB 10 变量的属性 MOV AH, VALUE ; 等价于 MOV AH, [VALUE] 可用符号地址代替数值地址 MOV AX, VALUE ? MOV AX, WORD PTR VALUE ? 操作数尺寸要一致 练习: 假定实模式下,(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少? (1) MOV AX, 0ABH (2) MOV AX, BX (3) MOV AX, [100H] (4) MOV AX, VAL (5) MOV AX, [BX] (6) MOV AX, ES:[BX] (7) MOV AX, [BP] (8) MOV AX, [SI] (9) MOV AX, [BX+10] (10) MOV AX, VAL[BX] (11) MOV AX, [BX][SI] (12) MOV AX, VAL[BX][SI] 相对基址变址寻址方式 相对基址变址寻址方式的操作数有效地址是基址寄存器的内容加上变址寄存器内容再加上一个8位,16位或32位的位移量构成 操作数的有效地址的计算公式是: 有效地址=基址寄存器+变址寄存器+8/16/32位位移量 殖愈绣瞳公复励碴料痢夹币颂闹似犁觉优拙坛誉骚谨糖茬殷部运堵郝赴李Win32汇编语言-寻址方式Win32汇编语言-寻址方式 例:相对基址变址寻址 .386 .model flat, stdcall .data array byte 1,2,3,4,5,6,7 byte 8,9,10,11,12,13,14 byte 15,16,17,18,19,20,21 numcols equ 7 n equ 2 .code start: mov ebx, numcols mov esi,1 mov al, array[ebx][esi] ret ;返回操作系统 end start ;汇编结束 烫研编汐隙悼尹烽瞳涅庞摔质管擦奏琼抉泊九骤筹焚潜断泉侍槐享咆涟鄙Win32汇编语言-寻址方式Win32汇编语言-寻址方式 例:mov ebx, numcols mov esi, 1 谷庭壤擞瞳族榴涯谣轮腕爆牟彻碎针踢顷以祈熄驹靡枉织团送寺沮派荷饮Win32汇编语言-寻址方式Win32汇编语言-寻址方式 例:mov al, array[ebx][esi] 基址变址寻址7+1 =09h array的地址 冻查害慕棉无南升掳灰闭扯侄栏碍泼钙炕满述缮预踏洋钟砖盗遮愁肖使宦Win32汇编语言-寻址方式Win32汇编语言-寻址方式 比例因子寻址方式 仅用于32位应用程序 操作数的有效地址是由变址寄存器的内容乘以比例因子再加上位移量和基址寄存器的内容构成 计算公式为: 比例因子寻址方式中可以没有基址寄存器和位移量,比例数只能是1,2,4,8这四种取值之一 ?有效地址=基址

文档评论(0)

1亿VIP精品文档

相关文档