. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  mov ax 1为什么在内存中就知道是需要3Byte?  [待解决] 回复[ 3次 ]   点击[ 304次 ]  
lianlin
[帖 主]   [ 发表时间:2014-07-31 14:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-29 16:13
mov ax 1为什么在内存中就知道是需要3Byte?
gyq
[第1楼]   [ 回复时间:2014-08-10 00:40 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
cpu的指令集,指令集存储的大小是固定的。
MOV ax,立即数  这是指令集中的一个,cpu自然有办法知道指令集的长度。
cpu判断也是一步一步进行的:
如果还想了解下面网址有说:
http://zhidao.baidu.com/link?url=wFU0cNdGzVcLk4pPkdQEnkW-_yQT_qv7FMgtMIuExpQYckA6Mn5dL2JUFW30n6soG_4uyhCv6KYdWupAjHQBHK
wang547915448
[第2楼]   [ 回复时间:2014-08-20 09:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-27 22:16
指令长度与寻址方式有关系,规律或原则如下:

一、没有操作数的指令,指令长度为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
等。

四、操作数涉及立即数的指令,指令长度为:寄存器类型+2。
8位寄存器,寄存器类型=1;16位寄存器,寄存器类型=2。如
mov al,8 ;指令长度为2
mov ax,8 ;指令长度为3
等。

五、跳转指令,分3种情况,指令长度分别为2、3、5字节。
1、段内跳转,指令长度=(目标地址-指令当前地址)+1
jmp指令本身占用1个字节。
(目标地址-指令当前地址)若能用1个字节表示,则占用1个字节,整体指令长度为2字节;如
0113 jmp 0185 ;0185h-0113h=72h,72h可用1个字节表示
若需2个字节表示,则占用2个字节,整体指令为3个字节。如
0113 jmp 0845 ;0845h-0113h=732h,732h需用2个字节表示
2、段间跳转,指令长度为5字节。如
jmp 1234:5678
gyq
[第3楼]   [ 回复时间:2014-08-20 13:35 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2014-08-02 21:25
2楼对指令的长度总结全面,赞。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved