读书人

(首先、二章)nasm的汇编和反汇编

发布时间: 2012-06-27 14:20:09 作者: rapoo

(第一、二章)nasm的汇编和反汇编

nasm的汇编和反汇编

步骤:

1. 汇编(boot.asm为boot.bin)

nasm boot.asm -o boot.bin

2. 反汇编(boot.bin为disboot.asm)

ndisasm -o 0x7C00 boot.bin >> disboot.asm

?

注:nasm和ndisasm工具都是nasm的组件:)

****************************************************************************

"boot.asm"文件:

?

org07c00h; 告诉编译器程序加载到7c00处movax, csmovds, axmoves, axcallDispStr; 调用显示字符串例程jmp$; 无限循环DispStr:movax, BootMessagemovbp, ax; ES:BP = 串地址movcx, 16; CX = 串长度movax, 01301h; AH = 13,  AL = 01hmovbx, 000ch; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)movdl, 0int10h; 10h 号中断retBootMessage:db"Hello, OS world!"times 510-($-$$)db0; 填充剩下的空间,使生成的二进制代码恰好为512字节dw 0xaa55; 结束标志
?

?

****************************************************************************

"disboot.asm"文件:

?

//ndisasm -o 0x7c00 boot.bin >> disboot.asm//下面是反汇编boot.bin得到的disboot.asm文件://1. 程序框架00007C00  8CC8              mov ax,cs00007C02  8ED8              mov ds,ax00007C04  8EC0              mov es,ax00007C06  E80200            call word 0x7c0b00007C09  EBFE              jmp short 0x7c09//2. 显示字符串子例程00007C0B  B81E7C            mov ax,0x7c1e00007C0E  89C5              mov bp,ax00007C10  B91000            mov cx,0x1000007C13  B80113            mov ax,0x130100007C16  BB0C00            mov bx,0xc00007C19  B200              mov dl,0x000007C1B  CD10              int 0x1000007C1D  C3                ret//3. 0x7C1E~0x7c2D中存放字符串"Hello, OS world!",下面其实不是指令:)而是数据//0x48: 'H'//0x656C: 'e''l'//...//0x642100: 'd''!'00007C1E  48                dec ax00007C1F  656C              gs insb00007C21  6C                insb00007C22  6F                outsw00007C23  2C20              sub al,0x2000007C25  4F                dec di00007C26  53                push bx00007C27  20776F            and [bx+0x6f],dh00007C2A  726C              jc 0x7c9800007C2C  642100            and [fs:bx+si],ax//4. 剩余部分填充0// 510-($-$$)=510-(0x7C2F-0x7C00)=510-0x2F=510-47=463,//即,从0x7C2F开始(包括0x7C2F)需要填充463个字节//1)下面类似**** 0000 add [bx+si],al一共有231行,也即462个bytes(每个byte都是0x00)//2)还差一个字节0x00,这个字节应该放到7DFD字节单元中——这是通过最后一条指令//00007DFD  0055AA            add [di-0x56],dl完成的00007C2F  0000              add [bx+si],al00007C31  0000              add [bx+si],al00007C33  0000              add [bx+si],al00007C35  0000              add [bx+si],al00007C37  0000              add [bx+si],al00007C39  0000              add [bx+si],al00007C3B  0000              add [bx+si],al00007C3D  0000              add [bx+si],al00007C3F  0000              add [bx+si],al00007C41  0000              add [bx+si],al00007C43  0000              add [bx+si],al00007C45  0000              add [bx+si],al00007C47  0000              add [bx+si],al00007C49  0000              add [bx+si],al00007C4B  0000              add [bx+si],al00007C4D  0000              add [bx+si],al00007C4F  0000              add [bx+si],al00007C51  0000              add [bx+si],al00007C53  0000              add [bx+si],al00007C55  0000              add [bx+si],al00007C57  0000              add [bx+si],al00007C59  0000              add [bx+si],al00007C5B  0000              add [bx+si],al00007C5D  0000              add [bx+si],al00007C5F  0000              add [bx+si],al00007C61  0000              add [bx+si],al00007C63  0000              add [bx+si],al00007C65  0000              add [bx+si],al00007C67  0000              add [bx+si],al00007C69  0000              add [bx+si],al00007C6B  0000              add [bx+si],al00007C6D  0000              add [bx+si],al00007C6F  0000              add [bx+si],al00007C71  0000              add [bx+si],al00007C73  0000              add [bx+si],al00007C75  0000              add [bx+si],al00007C77  0000              add [bx+si],al00007C79  0000              add [bx+si],al00007C7B  0000              add [bx+si],al00007C7D  0000              add [bx+si],al00007C7F  0000              add [bx+si],al00007C81  0000              add [bx+si],al00007C83  0000              add [bx+si],al00007C85  0000              add [bx+si],al00007C87  0000              add [bx+si],al00007C89  0000              add [bx+si],al00007C8B  0000              add [bx+si],al00007C8D  0000              add [bx+si],al00007C8F  0000              add [bx+si],al00007C91  0000              add [bx+si],al00007C93  0000              add [bx+si],al00007C95  0000              add [bx+si],al00007C97  0000              add [bx+si],al00007C99  0000              add [bx+si],al00007C9B  0000              add [bx+si],al00007C9D  0000              add [bx+si],al00007C9F  0000              add [bx+si],al00007CA1  0000              add [bx+si],al00007CA3  0000              add [bx+si],al00007CA5  0000              add [bx+si],al00007CA7  0000              add [bx+si],al00007CA9  0000              add [bx+si],al00007CAB  0000              add [bx+si],al00007CAD  0000              add [bx+si],al00007CAF  0000              add [bx+si],al00007CB1  0000              add [bx+si],al00007CB3  0000              add [bx+si],al00007CB5  0000              add [bx+si],al00007CB7  0000              add [bx+si],al00007CB9  0000              add [bx+si],al00007CBB  0000              add [bx+si],al00007CBD  0000              add [bx+si],al00007CBF  0000              add [bx+si],al00007CC1  0000              add [bx+si],al00007CC3  0000              add [bx+si],al00007CC5  0000              add [bx+si],al00007CC7  0000              add [bx+si],al00007CC9  0000              add [bx+si],al00007CCB  0000              add [bx+si],al00007CCD  0000              add [bx+si],al00007CCF  0000              add [bx+si],al00007CD1  0000              add [bx+si],al00007CD3  0000              add [bx+si],al00007CD5  0000              add [bx+si],al00007CD7  0000              add [bx+si],al00007CD9  0000              add [bx+si],al00007CDB  0000              add [bx+si],al00007CDD  0000              add [bx+si],al00007CDF  0000              add [bx+si],al00007CE1  0000              add [bx+si],al00007CE3  0000              add [bx+si],al00007CE5  0000              add [bx+si],al00007CE7  0000              add [bx+si],al00007CE9  0000              add [bx+si],al00007CEB  0000              add [bx+si],al00007CED  0000              add [bx+si],al00007CEF  0000              add [bx+si],al00007CF1  0000              add [bx+si],al00007CF3  0000              add [bx+si],al00007CF5  0000              add [bx+si],al00007CF7  0000              add [bx+si],al00007CF9  0000              add [bx+si],al00007CFB  0000              add [bx+si],al00007CFD  0000              add [bx+si],al00007CFF  0000              add [bx+si],al00007D01  0000              add [bx+si],al00007D03  0000              add [bx+si],al00007D05  0000              add [bx+si],al00007D07  0000              add [bx+si],al00007D09  0000              add [bx+si],al00007D0B  0000              add [bx+si],al00007D0D  0000              add [bx+si],al00007D0F  0000              add [bx+si],al00007D11  0000              add [bx+si],al00007D13  0000              add [bx+si],al00007D15  0000              add [bx+si],al00007D17  0000              add [bx+si],al00007D19  0000              add [bx+si],al00007D1B  0000              add [bx+si],al00007D1D  0000              add [bx+si],al00007D1F  0000              add [bx+si],al00007D21  0000              add [bx+si],al00007D23  0000              add [bx+si],al00007D25  0000              add [bx+si],al00007D27  0000              add [bx+si],al00007D29  0000              add [bx+si],al00007D2B  0000              add [bx+si],al00007D2D  0000              add [bx+si],al00007D2F  0000              add [bx+si],al00007D31  0000              add [bx+si],al00007D33  0000              add [bx+si],al00007D35  0000              add [bx+si],al00007D37  0000              add [bx+si],al00007D39  0000              add [bx+si],al00007D3B  0000              add [bx+si],al00007D3D  0000              add [bx+si],al00007D3F  0000              add [bx+si],al00007D41  0000              add [bx+si],al00007D43  0000              add [bx+si],al00007D45  0000              add [bx+si],al00007D47  0000              add [bx+si],al00007D49  0000              add [bx+si],al00007D4B  0000              add [bx+si],al00007D4D  0000              add [bx+si],al00007D4F  0000              add [bx+si],al00007D51  0000              add [bx+si],al00007D53  0000              add [bx+si],al00007D55  0000              add [bx+si],al00007D57  0000              add [bx+si],al00007D59  0000              add [bx+si],al00007D5B  0000              add [bx+si],al00007D5D  0000              add [bx+si],al00007D5F  0000              add [bx+si],al00007D61  0000              add [bx+si],al00007D63  0000              add [bx+si],al00007D65  0000              add [bx+si],al00007D67  0000              add [bx+si],al00007D69  0000              add [bx+si],al00007D6B  0000              add [bx+si],al00007D6D  0000              add [bx+si],al00007D6F  0000              add [bx+si],al00007D71  0000              add [bx+si],al00007D73  0000              add [bx+si],al00007D75  0000              add [bx+si],al00007D77  0000              add [bx+si],al00007D79  0000              add [bx+si],al00007D7B  0000              add [bx+si],al00007D7D  0000              add [bx+si],al00007D7F  0000              add [bx+si],al00007D81  0000              add [bx+si],al00007D83  0000              add [bx+si],al00007D85  0000              add [bx+si],al00007D87  0000              add [bx+si],al00007D89  0000              add [bx+si],al00007D8B  0000              add [bx+si],al00007D8D  0000              add [bx+si],al00007D8F  0000              add [bx+si],al00007D91  0000              add [bx+si],al00007D93  0000              add [bx+si],al00007D95  0000              add [bx+si],al00007D97  0000              add [bx+si],al00007D99  0000              add [bx+si],al00007D9B  0000              add [bx+si],al00007D9D  0000              add [bx+si],al00007D9F  0000              add [bx+si],al00007DA1  0000              add [bx+si],al00007DA3  0000              add [bx+si],al00007DA5  0000              add [bx+si],al00007DA7  0000              add [bx+si],al00007DA9  0000              add [bx+si],al00007DAB  0000              add [bx+si],al00007DAD  0000              add [bx+si],al00007DAF  0000              add [bx+si],al00007DB1  0000              add [bx+si],al00007DB3  0000              add [bx+si],al00007DB5  0000              add [bx+si],al00007DB7  0000              add [bx+si],al00007DB9  0000              add [bx+si],al00007DBB  0000              add [bx+si],al00007DBD  0000              add [bx+si],al00007DBF  0000              add [bx+si],al00007DC1  0000              add [bx+si],al00007DC3  0000              add [bx+si],al00007DC5  0000              add [bx+si],al00007DC7  0000              add [bx+si],al00007DC9  0000              add [bx+si],al00007DCB  0000              add [bx+si],al00007DCD  0000              add [bx+si],al00007DCF  0000              add [bx+si],al00007DD1  0000              add [bx+si],al00007DD3  0000              add [bx+si],al00007DD5  0000              add [bx+si],al00007DD7  0000              add [bx+si],al00007DD9  0000              add [bx+si],al00007DDB  0000              add [bx+si],al00007DDD  0000              add [bx+si],al00007DDF  0000              add [bx+si],al00007DE1  0000              add [bx+si],al00007DE3  0000              add [bx+si],al00007DE5  0000              add [bx+si],al00007DE7  0000              add [bx+si],al00007DE9  0000              add [bx+si],al00007DEB  0000              add [bx+si],al00007DED  0000              add [bx+si],al00007DEF  0000              add [bx+si],al00007DF1  0000              add [bx+si],al00007DF3  0000              add [bx+si],al00007DF5  0000              add [bx+si],al00007DF7  0000              add [bx+si],al00007DF9  0000              add [bx+si],al00007DFB  0000              add [bx+si],al//5. 00007DFD 字节单元放0x00//00007DFE 字节单元放0x55//00007DFF 字节单元放0xAA00007DFD  0055AA            add [di-0x56],dl
?

读书人网 >操作系统

热点推荐