【 – 字数作文】
篇一:《反汇编hex文件》
思路:原谅虫子买个关子,当看了就知道了
1.软材料
IDA5.0。下载地址:jtag最新固件,见附件
hexbin,见附件,(语法:hexbin filename.hex [filename.bin] )
stk500_M8源程序。(附件中有我移植好的减少代码的m16源程序)
2.硬材料,见附件电路图
好了,准备好了,开始做菜了:)
1)用ida打开固件,如下图:
点击此处下载ourdev_179161.rar(文件大小:100K)
到这步时用hexbin把hex转为bin文件,出现如下提示(不转也可以)
篇二:《汇编语言16进制转换为2进制》
STACK SEGMENT STACK 'STACK'
STA DB 40 DUP(?) STACK ENDS DATA SEGMENT FLAG DB 0 DATA ENDS DECIMAL_TO_BIN_HEX SEGMENT ASSUME CS:DECIMAL_TO_BIN_HEX,DS:DATA START: MOV AX,DATA MOV DS,AX REPEAT:CALL DEC2BIN CALL CRLF TEST FLAG,1 JNZ REPEAT
CALL BIN CALL HEX CALL CRLF JMP REPEAT DEC2BIN PROC NEAR MOV BX,0 MOV FLAG,BL NEWCHAR:MOV AH,1 INT 21H CMP AL,3H JNZ CONTINUE MOV AX,4C00H INT 21H CONTINUE:SUB AL,30H
JL EXIT CMP AL,9D JG EXIT CBW XCHG AX,BX MOV CX,10D MUL CX JC ERR XCHG AX,BX ADD BX,AX JC ERR JMP NEWCHAR ERR: MOV FLAG,1 EXIT: RET DEC2BIN ENDP ;*******************************************; CRLF PROC NEAR MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H RET
;*******************************************; ONE PROC NEAR ROL BX,1 MOV AL,BL AND AL,1 ADD AL,30H MOV DL,AL MOV AL,2 INT 21H RET ONE ENDP ;********************************************; BIN PROC NEAR
MOV CX,10H ROTATEL:CALL ONE LOOP ROTATEL CALL CRLF RET BIN ENDP ;*********************************************; HEX PROC NEAR MOV CH,4 ROTATE3:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H
CMP AL,3AH JL PRINTIT ADD AL,7H PRINTIT:MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE3 CALL CRLF RET HEX ENDP ;*********************************************; DECIMAL_TO_BIN_HEX ENDS END START
data1 db 'input the number(4 bits):$' ;0-F之间任意四位的输入 data2 db 'the binary number:$' data ends code segment assume cs:code,ds:data main proc far start:mov ax,data mov ds,ax mov dx,offset data1 mov ah,09h int 21h
call crlf mov bx,0 mov cx,4 m1:mov ah,01h int 21h cmp al,3ah jl m2 sub al,7h jmp m2 m2:sub al,30h
cbw xchg ax,bx mov dx,16d mul dx xchg ax,bx add bx,ax loop m1 call crlf mov dx,offset data2 mov ah,09h int 21h call crlf
mov cx,16 m3:test bx,8000h jnz m4 mov dl,'0' mov ah,02h int 21h jmp m5 m4:mov dl,'l' mov ah,02h int 21h
m5:shl bx,1
loop m3 mov ah,4ch int 21h ret main endp
crlf proc near;回车换行子程序 mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h
int 21h ret crlf endp code ends end start
篇三:《汇编语言16进制到10进制转换》
DEC2HEX SEGMENT
xp DB 0H
ASSUME CS:DEC2HEX
REPEAT: CALL DEC2BIN
CALL CRLF
CALL BIN2HEX
CALL CRLF
JMP REPEAT
DEC2BIN PROC NEAR
XOR BX,BX ;bx=0
NEWCHAR: MOV AH,1 ;输入指令,存放在al
INT 21H
SUB AL,30H
JL EXIT ;小于,不是数字也不是字母
CMP AL,9
JG E222;大于9,为字母
JMP E333;小于9,为数字
E222: SUB AL,7H;将字母代表的值转化为10进制下的数值 CMP AL,15
JG EXIT;大于十五,则不是16进制数,退出.
JMP E333;输入的是a到f,为16进制的数
E333: CBW ;ah=0000 0000
XCHG AX,BX ;ax=0000 0000 0000 0000 bx=0000 0000 0000 **** ;bx存放先输入的值,即高位.
MOV CX,16;cx=0001 0000
MUL CX ;cx*ax, dx放高16位, ax放低16位 (把ax左移4位) ; ax,bx互换,把之前的高位左移到更高位
XCHG AX,BX ;换回来,bx还是用来存放高位
ADD BX,AX
JMP NEWCHAR
EXIT: RET
DEC2BIN ENDP{汇编语言hex}.
BIN2HEX PROC NEAR
MOV CX,BX;存放的16进制的值给cx
ROTATE:XOR DX,DX;dx=0000 0000 0000 0000
MOV AX,CX;
MOV BX, 0AH
DIV BX;dx取余,ax取整
MOV CX,AX;取整的值给cx
ADD DL,30H
PUSH DX
INC XP
AND CX,CX
JNE ROTATE
PRINTIT: POP DX
DEC XP
CMP DL,20H
JE PRINTIT ; 这两句似乎没有用 MOV AH,2
INT 21H
CMP XP,0
JNE PRINTIT
RET
BIN2HEX ENDP
CRLF PROC NEAR MOV DL,0DH;回车 ; MOV AH,2 ;输出字符,dl INT 21H
MOV DL,0AH ;换行 MOV AH,2
INT 21H
RET
CRLF ENDP
DEC2HEX ENDS{汇编语言hex}.{汇编语言hex}.
END REPEAT
篇四:《用keil生成hex文件》
用keil生成hex文件
1、建立mcs51源文件,选择new project建立管理项目{汇编语言hex}.
2、选择被仿真的51器件
3、建立源文件
输入汇编语言源程序
4、点击如图图标,对源程序进行编译、链接{汇编语言hex}.{汇编语言hex}.
在下面的图形中,会显示是否有语法错误,如有着调入源程序改正,如没有则可进行下一步,生成扩展名为“hex”的二进制文件。
5、生成“hex”文件
1)鼠标指向项目文件夹
2)压下鼠标右件,选择如图中的选项,进入
3)在下图中选择,“output”
将Creat HEX File打勾建立“hex”文件,在Name of Executable 给可执行文件取名, 在Select Folder for Objects 选择存放路径,然后确定。
4)点击图标再次进行汇编,汇编后即可得到扩展名为“hex”的可执行二进制文件