- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapter4数据传送、寻址及算术运算
第4章 数据传送、寻址和算术运算; MOV指令
MOVZX指令
MOVSX指令
LAHF指令
SAHF指令
XCHG指令;4.1.2 操作数类型;4.1.3 直接内存操作数;4.1.4 MOV指令;拷贝较小值至较大值中
例如:将count(无符号16位数)送到ECX中;4.1.5 MOVZX指令;4.1.5 MOVSX指令; LAHF指令;SAHF指令;XCHG指令;4.1.8 直接偏移操作数;4.1.8 直接偏移操作数;4.2 加法和减法; INC和DEC指令; ADD指令和SUB指令; 例如:
.data
var1 DWORD 10000h
var2 DWORD 20000h
.code
mov eax, var1
add eax, var2 ; eax=30000h,var1=10000h,var2=20000h
CF=0,SF=0,ZF=0,OF=0; ADD指令和SUB指令; NEG指令; 加减运算示例;4.2.6 算术运算影响的标志;4.2.6 算术运算影响的标志;4.2.6 算术运算影响的标志;;4.3 和数据相关的操作符和伪指令; OFFSET伪指令;OFFSET操作符也可以和直接偏移操作数联合使用。; ALIGN伪指令; PTR伪指令;.data
wordList WORD 5678h, 1234h
.code
mov eax , DWORD PTR wordList ;eax
; TYPE伪指令; LENGTHOF伪指令;.data
myArray1 BYTE 10, 20, 30, 40, 50
BYTE 60, 70, 80, 90, 100
;lengthof myArray1:5
myArray2 BYTE 10, 20, 30, 40, 50,
60, 70, 80, 90, 100
;lengthof myArray2:10; SIZEOF伪指令; LABEL伪指令;有时需要用两个较小的整数构造一个较大的整数:
.data
LongValue LABEL DWORD
val1 WORD 5678h
val2 WORD 1234h
.code
mov eax, LongValue ; EAX;;4.4 间接寻址;4.4.1 间接操作数;通用保护故障:在保护模式下,如果有效地址指向程序数据段之外的区域,CPU就会产生一个通用保护故障。
例如,如果ESI未初始化,下面的指令就可能产生通用保护故障:
mov ax, [esi]
使用作为间接操作数的寄存器应对其进行初始化!;PTR与间接操作数的联合使用
有时在一条指令的上下文中,操作数的大小通常并不
明确。例如:
inc [esi]
产生编译错误,因为编译器并不知道ESI是指向一个
字节、一个字还是一个双字。
需使用PTR操作符来明确表示操作数的尺寸:
inc BYTE PTR [esi];4.4.2 数组;.data
arrayD DWORD 10000h, 20000h, 30000h
.code
mov esi, OFFSET arrayD
mov eax, [esi] ; eax=10000h
add esi, 4
add eax, [esi] ; eax=20000h
add esi, 4
add eax, [esi] ; eax=30000h;4.4.3 变址操作数;.data
arrayB BYTE 10h, 20h, 30h
.code
mov esi, 0
mov al, [arrayB+esi] ;AL=10h;;4.4.4 指针;arrayB BYTE 10h, 20h, 30h, 40h
arrayW WORD 1000h, 2000h, 3
文档评论(0)