. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于检测点2.2 的问题  [待解决] 回复[ 6次 ]   点击[ 666次 ]  
nc3639
[帖 主]   [ 发表时间:2011-04-23 18:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-15 20:16
0001H*16等于多少呢?为什么?加上0000H呢?FFFFH是多少?F在16 进位制里不是表示15吗?0001H*16是 不是在后面加上个0就可以?那么00010加FFFFH是怎么运算的呢?EA取最大值时,SA=2000H-FFFFH/16=1001H
EA取最小值时,SA=2000H-0H/16=2000H

怎么算出来的 ?为什么不是减0000H
neur2520
[第1楼]   [ 回复时间:2011-04-29 10:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-28 17:19
0001H*16=00010H,为什么?是因为16进制中,*16相当与10进制*10一样的概念。16进制逢16进1,10进制逢10进1,2进制逢2进1。
一次问的太笼统,糊涂了。就回答第一个问题吧。。
pascal.s
[第2楼]   [ 回复时间:2011-05-07 00:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-06 06:09
我的理解:0001H*16=0001H*10H=0010H。同理:0001B*2=0001B*10B=0010B,0001*10=0010。
xiaob
[第3楼]   [ 回复时间:2011-05-27 20:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-27 19:57
0001H*16等于多少呢? = 0010H。这个应该没有问题吧,十六进制逢十六进一。

加上0000H呢?  这个不知道你想表达什么意思。但是要是段加上寻址的话那就是表示00010:0000这个内存上的内容。

FFFFH是多少?这个涉及到补码之类的问题,可以理解为带符号数,但是看楼主的表达的意思是指字节单元的最大值。就好像你用windows计算一下十进制-21用十六进制等于FFEB一样。有符号数在后面学到标志符的时候就应该懂了。


至于下面的。看一下内存寻址小结然后自己抽象理解一下应该能明白。。。。
zhuayi112
[第4楼]   [ 回复时间:2011-06-07 16:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-06 00:02
如果前面是数字则不需要加0 如 1111H 9824H 234DH
如果是字母且这个数是正数则要加0  如  0D34H D34H是不对的
csafei
[第5楼]   [ 回复时间:2011-06-08 11:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-06-06 17:11
16进制乘以16,不就相当于10进制乘以10吗,进位就是了。

1001h不是直接减出来的。2000H-FFFFH=10001h,要是段地址最小只能取1001h,总不能取1000.1h对吧?
lolmuta
[第6楼]   [ 回复时间:2011-07-22 11:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-04 17:09
書上說,如果沒有特別進位標示,就是十進位

0001h*16 這個16 是十進位
更簡單的說就是16個0001h加起來的話(在匯編中也沒有乘的概念,我看都是加來加去)
所以一開始是0001h,加了1變成0002h .... 加了14變成 000eh 加了15 變成000fh,加了16變成0010h

加上  0000h之後是多少? 0000h就是零,什麼數加了後都不會變


FFFFH是多少?F在16 进位制里不是表示15吗? 是的
所以ffffh是15*(16^3)+15*(16^2)+15*(16^1)+15*(16^0)


那么00010加FFFFH是怎么运算的呢?
先來想一下,fh+1h是多少?剛剛上面演示過了,是 10h,所有的東西都是從這裡推導出來的,不信請看下面拆解
那ffh+1h是多少?你可以看成是(要將ffh看成是f0h+fh,這二個值是一樣的)
(f0h+fh)+1h=f0h+(fh+1h)=f0h+10h=10h*(fh+1h)=10h*10h=100h
有時侯搞不懂我都是用數學慢慢推出來,


其實我最想回答的是第二題,
我將題目簡化如下,給定二值Sa 與 偏移地址(都是整數),其定義域為
0<=sa<=2^16-1      0<=偏移地址<=2^16-1
在下列式子成例的情況下,
SA*16+偏移地址=20000H
求SA的最大最小值。

解:
sa*16+偏移地址=20000h
sa=(20000h-偏移地址)/16

那我們知道
0<=偏移地址<=ffffh=(2^16-1)
現在我們要將偏移地址變成sa所以開始下面動作

全部乘上-1
-ffffh<=(-1)*偏移地址<=0
全部加上20000h
20000h-ffffh<=20000h-偏移地址<=20000h
10001h<=20000h-偏移地址<=20000h
通通除以16

1000.1h<=(20000H-偏移地址)/16<=2000h

就是
1000.1h<=sa<=2000h
根據題意,
sa 是整數
所以sa的變動範圍是
1001h<=sa<=2000H
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved