(第一、二章)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?