永发信息网

汇编教材问题

答案:2  悬赏:60  手机版
解决时间 2021-08-15 18:59
  • 提问者网友:斑駁影
  • 2021-08-15 01:23

王爽的汇编语言上的这个。

应用8086CPU完成运算s=768+12288-1280,机器码如下。

101100000000000000000011
000001010000000000110000
001011010000000000000101

 

问,那二进制的代码是如何算出来的?

最佳答案
  • 五星知识达人网友:轮獄道
  • 2021-08-15 01:32
汇编语言里面那些操作符,比如mov,add,sub什么的,也只是助记符
真正编译成的代码就是二进制(全是0和1),cpu只懂这个
打个比方吧
比如我们可以规定
操作符
mov -> 01x
add -> 10x
sub -> 11x
后面的x代表右操作数,1是寄存器,0是数值
寄存器操作数
ax -> 01
bx -> 10
其他数值操作数就是其二进制本身,比如1就是1,2就是10
那么
mov ax, 1
add ax, 2
sub bx, ax
翻译成纯二进制代码就是
010_01_01
100_01_10
111_10_01
里面的_只是为了区分各个操作符和操作数,这样就能看懂了吧,实际比这个要复杂,不过思想大致就是这样
全部回答
  • 1楼网友:神的生死簿
  • 2021-08-15 01:48

反汇编

s    dw    768

mov ax,12288

sub ax,1280

add [s],ax

上面这段代码就是实现那功能的,用16进制工具就可以查看得到,实现方法多种,不知道王爽的是哪种。比如还可以:

s    dw    ?

mov ax,768

add ax,12280

sub ax,1280

mov  s,ax

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯