♂"征òひ 发表于 2011-12-13 14:43:04

在看小甲鱼老师的汇编视频教程中【025第五章 [BX]和loop指令03】有个地方好像错了

在15分钟的地方那个汇编程序
小甲鱼老师说:
mov al,
mov ah, 0
可以改成
mov ax,

我觉得应该不行吧

因为ax是16位而 所在的偏移地址的值是8位
ax存的是一个字 而中存的是一个字节
这样ax的高位ah 就会是的内容

因为ax在被赋值时 被读取内存中一个字 而不是字节,是吧?
比如说的值是 2FH   的值是AAH
用未改前的算法 ax最终结果是002FH
而改后得出ax最终结果是AA2FH

liuweidi 发表于 2011-12-13 15:38:17

恩 同学 你很用心

小生我怕怕 发表于 2011-12-13 15:54:27

你们俩意思都是正确的
甲鱼应该想说的是::
mov al,
mov ah, 0
可以改成
mov ax,
这两句执行后,al的值是一样的吧

而你说的是执行后,整个ax的值不一样
我写了两个例子
第一个结果是:ax=0012h
第二个结果是:ax=3412h
例一:assume cs:qq,ds:ff
ff segment
db 12h,34h
ff ends
qq segment
start:mov ax,ff
mov ds,ax
mov ax,0
mov bx,0
mov al,
mov ah,0
mov ax,4c00h
int 21h
qq ends
end start

例二:
assume cs:qq,ds:ff
ff segment
db 12h,34h
ff ends
qq segment
start:mov ax,ff
mov ds,ax
mov ax,0
mov bx,0
mov ax,
mov ax,4c00h
int 21h
qq ends
end start呵呵,这种精神是值得学习的!加油哈

♂"征òひ 发表于 2011-12-13 16:41:14

小生我怕怕 发表于 2011-12-13 15:54 static/image/common/back.gif
你们俩意思都是正确的
甲鱼应该想说的是::
mov al,


嘿嘿 两次结果的ax都不同
那个题的目的是将内存中一段偏移地址为0~7这8个数据累加起来

如果=FFH=FFH=FFH=FFH
采用第一种方法 相加 绝对不可能溢出,因为读取的都是0~FFH的数据 是字节
如果采用第二种方式的话读取的就是字 那么才相加第一次就直接溢出了 FFFFH+FFFFH=?
对吧~~

吹水哥 发表于 2011-12-13 17:17:26

呵呵,是个问题,如果是只取al中的值那就没问题   但是取ax的值就可能有问题了!

zzmatrix 发表于 2011-12-13 17:20:40

对自己认为是错的东西要自信,不要因为是小鱼老师说的就拿不准是对还是错了。

豆子天空 发表于 2011-12-14 00:03:26

说的是结果相同 就当运气好了 我就是这么想的结果呢 没深入思考 看了你发的学习了

豆子天空 发表于 2011-12-14 00:07:13

如果高位都是00那就结果一样的

♂"征òひ 发表于 2011-12-14 08:45:00

因为我刚学汇编有些地方不确定所以来这确认一下嘿嘿~~~
页: [1]
查看完整版本: 在看小甲鱼老师的汇编视频教程中【025第五章 [BX]和loop指令03】有个地方好像错了