Where is my way?

 

随笔分类 -  汇编学习笔记

汇编空习(19)英文指令
摘要:AH&AL=AX(accumulator):累加寄存器 BH&BL=BX(base):基址寄存器 CH&CL=CX(count):计数寄存器 DH&DL=DX(data):数据寄存器 SP(Stack Pointer):堆栈指针寄存器 BP(Base Pointer):基址指针寄存器 SI(Source Index):源变址寄存器 DI(Destination Index):目的变址寄存器 IP(Instruction Pointer):指令指针寄存器 CS(Code Segment)代码段寄存器 DS(Data Segment):数据段寄存器 SS(Stack 阅读全文

posted @ 2011-08-15 11:41 ManLoveGirls 阅读(486) 评论(0) 推荐(0)

汇编学习(18)跳转指令
摘要: 阅读全文

posted @ 2011-08-15 11:35 ManLoveGirls 阅读(194) 评论(0) 推荐(0)

汇编学习(17)CMP指令
摘要:CMP source target影响标志位:> CF=1 =ZF=0< CF =0如果是有符号操作数> SF <> OF< SF=OF= ZF =1 阅读全文

posted @ 2011-08-15 11:16 ManLoveGirls 阅读(342) 评论(0) 推荐(0)

汇编学习(16)Uses指令
摘要:Uses指令紧跟PROCPROC USES EAX,EBX做两件事过程入口时先对寄存器压栈操作过程退出时 对寄存器出栈操作 ArraySum PROC USES esi,ecx mov eax,0 ; mov ecx,5L1: add eax,[esi] add esi,4 loop L1 retarraySum ENDP反汇编后得到 ArraySum PROC USES esi,ecx push eax, push ecx mov eax,0 ; mov ecx,5L1: add eax,[esi] add esi,4 loop L1 pop ecx pop eax retarraySum 阅读全文

posted @ 2011-08-15 08:45 ManLoveGirls 阅读(965) 评论(0) 推荐(0)

汇编学习(15)复制字符串
摘要:TITLE Copying a stringINCLUDE Irvine32.inc.datasource BYTE "This is the source string"target BYTE SIZEOF source DUP(0),0 .codemain PROC mov esi,0 ;偏移地址 esi = 0 mov ecx,SIZEOF source ;循环次数L1: mov al,source[esi] mov target[esi],al inc esi loop L1 exit main ENDP 阅读全文

posted @ 2011-08-14 20:58 ManLoveGirls 阅读(387) 评论(0) 推荐(0)

汇编学习(14)保护模式和实模式下的间接操作数
摘要:一、间接寻址 保护模式:间接操作数可以是任何用[]任意32位通用寄存器 实地址模式:只能使用BP,SI,DI,BX ,BP通常是对堆栈段寻址PTR: 与间接操作数的联合使用.inc BYTE PTR [esi]二、变址寻址变址操作数:[常量+寄存器] 得出内存单元计算偏移地址时必须考滤到每个数组元素大小 阅读全文

posted @ 2011-08-14 20:51 ManLoveGirls 阅读(321) 评论(0) 推荐(0)

汇编学习笔记(13)MOVZA、MOVSX,XCHG练习
摘要:TITLE Data Transfer ExampleINCLUDE irvine32.inc.dataval1 WORD 1000hval2 WORD 2000harrayB BYTE 10h,20h,30h,40h,50harrayW WORD 100H,200H,300HarrayD DWORD 100000h,20000H.codemain PROC ;MOVZX(move with zero-extend) mov bx,0A69Bh movzx,eax,bx ;0000A69BH movzx edx,bl ;00000009H movzx,cx,bl ;0009H ;MOVSX(. 阅读全文

posted @ 2011-08-13 00:13 ManLoveGirls 阅读(399) 评论(0) 推荐(0)

汇编学习(12)LAHF、SAHF、XCHG
摘要:LAHF(load status flags into AH) 指令将EFLAGS低字节复制进AH中 受影响Flags:SF,ZF,AF,PF,CF.datasaveFalgs BYTE ? .codelahfmov saveflags,ahSAHF(store AH into status flags) 把AH寄存器的值复制到EFLAGS低字节中mov ah,saveflagssahf XCHG(exchange data) 交换两个操作数的内容XCHG reg,regXCHG reg ,memXCHG mem,regXCHG不用能立即数操作数,如果要交换必须使用一个寄存器作临时变量mov. 阅读全文

posted @ 2011-08-12 23:52 ManLoveGirls 阅读(5456) 评论(0) 推荐(0)

跳转指令-LOOP
摘要:page 60,132TITLE A0405Loop(EXE) LOOP跳转指令 .MODEL SMALL .STACK 64 .DATA ORG 100H ;规定程序的起始地址 A10MAIN PROC NEAR MOV AX,00 MOV BX,00 MOV DX,01 MOV CX,10 ;循环次数 A20: ADD AX,01 ADD BX,AX SHL DX,1 ;左移一位 LOOP A20 ;跳转到A20,cx为0时 退出 LOOP指令执行时自动将cx =cx-1 MOV AX,4C00H INT 21H A10MAIN endp 阅读全文

posted @ 2011-08-07 15:23 ManLoveGirls 阅读(518) 评论(0) 推荐(0)

跳转指令-JMP
摘要:page 60,132TITLE A0405Jump(EXE) JMP跳转指令.MODEL SMALL.STACK 64.DATAORG 100H ;规定程序的起始地址A10MAIN PROC NEARMOV AX,00MOV BX,00MOV CX,1A20: ADD AX,01ADD BX,AXSHL CX,1 ;左移一位JMP A20 ;跳转到A20A10MAIN endpjmp格式[label:] jmp short/near/far/address跳转距离跟声明的proc short/near/far 有关 阅读全文

posted @ 2011-08-07 13:55 ManLoveGirls 阅读(474) 评论(0) 推荐(0)

短地址,近地址,远地址
摘要:1.短地址: 偏移范围-127~1282.近地址: 偏移范围-32678~32677 在同一段内3.远地址: 32位偏移地址,可以另一段中 阅读全文

posted @ 2011-08-07 13:37 ManLoveGirls 阅读(235) 评论(0) 推荐(0)

SUB,ADD指令进行立即数操作笔记
摘要:page 60,132TITLE A0404IMMED(EXE) 立即数操作 .MODEL SMALL ;存储模型 .STACK 64 ;栈空间大小 .DATA ;数据段 DB 'Immediate Values' ;字符串BYTEFLD DB 150 ;字节 8位 0~255WORDFLD DW 300 ;字 16位 255*255 0~65535DWDFLD DD 0 ;双字 32位 65535*65535.386 .CODEMAIN PROC FAR MOV AX,@data MOV DS,AX MOV CX,325 ADD CX,150 SUB BYTEFLD,50 M 阅读全文

posted @ 2011-08-07 12:45 ManLoveGirls 阅读(1015) 评论(0) 推荐(0)

跳转指令JNZ(jmp not equal)
摘要:TITLE A06MOVE (EXE) Repetitive move operations.MODEL SMALL.STACk 64;---------------------------------------------------------------------- .DATAHEADNG1 DB 'InterTech'HEAdNG2 DB 9 DUP('*'),'$'.CODEA10MAIN PROC FARMOV AX,@data ;初始化数据段MOV DS,AX ;MOV ES,AX MOV CX,09 ;循环次数LEA SI,H 阅读全文

posted @ 2011-08-06 18:00 ManLoveGirls 阅读(7986) 评论(0) 推荐(0)

SEGMENT伪指令说明
摘要:语法:segment-name SEGMENT [align] [combine] ['class']segment-nam ends [align]选项指明段开始边界,典型要求是para,它使段定位在在小段的边界。起码地址正好被16/10H整除,可以省略,默认为para[combine]组合 决定本段是否要和其它段组合在一起,组合类型:STACK,COMMON,PUBLIC,['Class']连接时用于相关段组合在一起,如代码段‘code’,数据段 'Data',堆栈段'Stack' PAGE 60,132 ;页面大小TITLE 阅读全文

posted @ 2011-08-06 16:08 ManLoveGirls 阅读(2202) 评论(0) 推荐(0)

伪指令PAGE和TITLE说明
摘要:伪指令PAGE和TITLE 用来控制被汇编的程序的列表格式PAGE [length][name]指定列在一页上的最大列数和一行上最大的字符数PAGE 60,130 每页最多60列,每行130行字符 TITLE text [comnent]标题 文本 注释TITLE Assemly 这是汇编程序 阅读全文

posted @ 2011-08-06 15:20 ManLoveGirls 阅读(371) 评论(0) 推荐(0)

寄存器(register memery)学习总结
摘要:寄存器名 说明 作用CS 有效程序代码的起始地址 CS:IP指向要执行的指令 (IP:偏移地址)DS 数据的起始地址 利用DS:偏移地址得到数据单元SS 堆栈起始地址 SS:SP(SP:栈指针)对栈进行操作取数据ES 段寄存器(在某些串中用于存储器寻址)与DI,SI相关联FS/GS 备用附加段寄存器指令指针寄存器16位IP寄存器包含要执行下一条指令的偏移地址 如上图中:[CS]=140CH,IP=0000H下一条指令为CS:IP = 140C:0000同理堆栈SS:SP指向栈顶位置BP可以使程序通过堆栈传递数据和地址,处理 器把在SS中的地址和BP中的偏移值组合起来,也可以和SI,DI组合起来 阅读全文

posted @ 2011-08-06 15:02 ManLoveGirls 阅读(299) 评论(0) 推荐(0)

导航