汇编语言hex

时间:2021-11-10 16:17:53 意向书

篇一:《反汇编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”的可执行二进制文件