dragonzht 2010年02月03日
使用.386后每条指令前都加了DB 66,为什么?
用MASM汇编下面程序,得到OMF格式的OBJ、EXE文件
反汇编EXE文件后看到每条指令前都加了DB 66指令
用二进制工具查看OBJ文件时,发现代码段中,每条指令前面的确加了数字66,下面的66就是
如果去掉前面的 .386 就没有数字66了
请问:谁知道为什么会加DB 66指令吗?

A0 30 00 03 00 00 66 B8 00 00 66 8E D8 66 8E C0 .0....f...f..f..
E8 00 00 00 00 66 83 C4 04 66 83 C4 02 66 8D 15 .....f...f...f..
00 00 00 00 B4 09 CD 21 B4 01 CD 21 66 B8 00 4C .......!...!f..L
CD 21 99 .!.

.386 (这里加386和不加有很大区别)
extern puts:near, gets:near

;用户输入一个字符串,按回车后程序回显该字符串,并提示按任意键退出程序
SSEG SEGMENT PARA STACK 'stack'
dw 100h dup(0) ;初始化堆栈大小为100
SSEG ENDS

DSEG SEGMENT
;数据段:在此处添加程序所需的数据
str1 db "press any key to exit", 13, 10, '$'
keybuf db 80h dup(0); 键盘输入缓冲区
DSEG ENDS

CODE SEGMENT
assume cs:CODE, ds:DSEG, ss:SSEG

MAIN PROC ;主程序入口

mov ax, dseg
mov ds, ax
mov es, ax

push word ptr keybuf
push 10h
call gets
add sp,4

push word ptr keybuf
call puts
add sp,2

; 按任意键结束程序
lea dx,str1
mov ah,09h
int 21h
mov ah,01h
int 21h

; 返回DOS系统
mov ax,4c00h
int 21h
MAIN ENDP

CODE ENDS

END MAIN
...全文
88 点赞 收藏 3
写回复
3 条回复

还没有回复,快来抢沙发~

发动态
发帖子
汇编语言
创建于2007-08-27

1.9w+

社区成员

4.1w+

社区内容

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区公告
暂无公告