如何把汇编语言转换成十六进制代码

2025-03-10 12:53:03
推荐回答(5个)
回答1:

题目应该是“如何用汇编语言把10进制数转换成十六进制代码”吧!
刚刚写了个,供参考:

;输入不超过65535的10进制数,将其以16进制的形式显示
code  segment
      assume cs:code
      org 100h
start:
      jmp bbb
x     dw 0
msg1  db 10,13,'please input a number:','$'
msg2  db 10,13,'     ','$'

bbb:
      push cs
      pop ds
      lea dx,msg1
      mov ah,9
      int 21h
      
      lea bx,x
      mov ax,0
      push ax
again1:
      mov ah,1
      int 21h
      cmp al,13
      je line0
      sub al,30h
      mov ah,0
      mov si,ax
      pop ax
      mov cl,10
      mov ch,0
      mul cx
      add ax,si
      push ax
      jmp again1
line0:
      pop ax
      mov word ptr[x],ax
      lea di,msg2
      inc di
      inc di
      mov cx,4
again2:
      mov ax,word ptr[x]
      rol ax,1
      rol ax,1
      rol ax,1
      rol ax,1
;      rol ax,4
      mov word ptr[x],ax
      and ax,000Fh
      cmp al,9
      jg line1
      add al,30h
      mov byte ptr[di],al
      jmp line2
line1:
      add al,37h
      mov byte ptr[di],al
line2:
      inc di
      loop again2
      
      lea dx,msg2
      mov ah,9
      int 21h
      mov ah,8
      int 21h

      mov ah,4ch
      int 21h
code  ends
      end start

回答2:

不熟汇编,,,随便提点想法,,错了勿怪
先是确定你针对哪种汇编,例如是8086的,那么通过手册可以查阅到所有语句的对应二进制码(不同的汇编语言不同),这个是你要写在yacc的语义动作里的

然后是2-16的转换,这个你在整个输入程序的最后的动作中,把前述的二进制码转成16进制就可以了吧?比如在yacc里, S: a b c {here convert all binary code reference(maybe a stack) to hex.}

抛砖引玉……
----------
都说了不熟汇编了。。。感觉上不是很难吧,你又是用vc写编译器,应该有现成的库可以用~bls

回答3:

不是把汇编语言转换成十六进制代码,而是把用汇编语言写的程序编译成十六进制的代码,需要编译软件呀。

回答4:

使用编译器,编译软件就可以把汇编语言的源代码编译,然后生成HEX文件也就是16进制代码

例如:KEIL UV2,UV3,UV4等,或伟福,或IAR等软件都是编译软件

回答5:

用编译软件,
曾经的单板机编程,是需要人工查表转化