. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->自由讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  汇编指令长度如何计算?  [待解决] 回复[ 6次 ]   点击[ 416次 ]  
girl_lulu
[帖 主]   [ 发表时间:2010-04-15 17:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-12 21:25
比如:


一、没有操作数的指令,指令长度为1字节。如
es:
ds:
cbw
xlat
等。

二、操作数只涉及寄存器的指令,指令长度为2字节。如
mov al,[si]
mov ax,[bx+si]
mov ds,ax
等。

三、操作数涉及内存地址的指令,指令长度为3字节。如
mov al,[bx+1]
mov ax,[bx+si+3]
lea di,[1234]
mov [2345],ax
等。



以上什么意思(具体解释?)

谢谢!!
versaariel
[第1楼]   [ 回复时间:2010-04-15 20:20 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
看书吧^-^
girl_lulu
[第2楼]   [ 回复时间:2010-04-20 13:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-12 21:25
回复:[第1楼]
------------------
我是在很认真的问诶  诶···^-^
dking94
[第3楼]   [ 回复时间:2010-04-20 13:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-01 22:16
拿第三种举个例子,就是说指令 mov al,[bx+1] 在经过编译变成“机器码”之后,占3个字节。
在debug下很容易验证:

-a 0:200
0000:0200 mov al,[bx+1]
0000:0203

看到了吗,在0:200处写入上述指令,占用了0:200,0:201,0:202这三个单元,提示你要是再输入下条指令的话,从0:203处开始

-u 0:200
0000:0200 8A4701        MOV     AL,[BX+01]
0000:0203 0000          ADD     [BX+SI],AL
0000:0205 0000          ADD     [BX+SI],AL
0000:0207 0000          ADD     [BX+SI],AL
0000:0209 0000          ADD     [BX+SI],AL

看看,MOV     AL,[BX+01]变成机器码就是8A4701,占3个字节。

-q
girl_lulu
[第4楼]   [ 回复时间:2010-04-23 21:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-12 21:25
回复:[第3楼]
------------------
看到了吗,在0:200处写入上述指令,占用了0:200,0:201,0:202这三个单元,提示你要是再输入下条指令的话,从0:203处开始
____看到了!但原因是为什么,或者说0000:0200 mov al,[bx+1] 这条指令为什么是占用3个单元,而不是…?
versaariel
[第5楼]   [ 回复时间:2010-04-24 18:05 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
你这个问题是指令设计的问题了,和硬件相关了,找本x86 opcode了解一下就可以了,不是重点
sleepinglion
[第6楼]   [ 回复时间:2010-07-29 22:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-13 23:22
很简单,写一个简单的程序,然后用debug调试一下,输入u命令后,你就会明白了。0000:0200 8A4701        MOV     AL,[BX+01] 
8A4701共3字节,明白了没?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved