首页
社区
课程
招聘
在学习汇编语言中遇到的一个难点,
发表于: 2007-3-4 16:04 7044

在学习汇编语言中遇到的一个难点,

2007-3-4 16:04
7044
学到汇编加减法这 出现一个问题!
教程里面说指令:
INC不影响CF标志,,
但如果是这样一条指令呢?
INC FFH
DEC 00H
都是无符号数运算,结果将会怎么样?影响CF标志吗?

在立即数也有一处不明白:

MOV AL,5
MOV AL,05H
这两个的表达意思一样吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
后者意思应该一样吧。
2007-3-4 16:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
但书写
mov al,05
这样不是更方便,为什么要写成

mov al,05H
2007-3-4 16:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没人知道么?
2007-3-4 21:10
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
INC FFH
DEC 00H
语法错误,不能是立即数

mov al,05H
习惯.
2007-3-4 22:15
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
mov al, 05h
这样写不容易错,不会出现立即数过大导致al装不下的情况,只要保证立即数是两位的十六进制数就可以了
2007-3-5 13:12
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
7
Originally posted by thebutterfly
mov al, 05h
这样写不容易错,不会出现立即数过大导致al装不下的情况,只要保证立即数是两位的十六进制数就可以了


push 05h
pop al

:)
2007-3-5 18:20
0
雪    币: 222
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
楼上的,I彻底服了U
2007-3-5 19:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 jjnet 发布
INC FFH
DEC 00H
语法错误,不能是立即数

mov al,05H
........


先谢谢这位朋友

mov al,ffH
inc al
mov bl,00H
dec bl
这样呢?
说inc和dec不影响CF标志。
如果是上面的情况,影响么?
2007-3-5 23:09
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
最初由 wscgs 发布
先谢谢这位朋友

mov al,ffH
inc al
mov bl,00H
dec bl
这样呢?
说inc和dec不影响CF标志。
如果是上面的情况,影响么?


我也是初学者,不过可以自己实验一下啊.在"运行"对话框里输入"debug",再把你的代码输入进去跟踪一下.
MOV     AL,FF
INC     AL
两条指令的执行结果是发现只有ZERO标志改变了啊,CF确实没变.

MOV     BL,00
DEC     BL
两条指令的执行结果是CF仍没变化,ZERO标志又置回了非零,PL位变成了NG状态了----不过是什么意思我明天查要过书才知道^_^ 有知道的老兄也可以告诉一下啊.
("NV UP EI PL NZ NA PO NC"这些字符代表FLAG寄存器的状态,NZ变为ZR,表示ZERO标志变了,而NC就是表示没进位)

-a100
0AF4:0100 B0FF          MOV     AL,FF
0AF4:0102 FEC0          INC     AL
0AF4:0104 B300          MOV     BL,00
0AF4:0106 FECB          DEC     BL
0AF4:0108 CC            INT     3
-t=100 1

AX=00FF  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AF4  ES=0AF4  SS=0AF4  CS=0AF4  IP=0102   NV UP EI PL NZ NA PO NC
0AF4:0102 FEC0          INC     AL
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AF4  ES=0AF4  SS=0AF4  CS=0AF4  IP=0104   NV UP EI PL ZR AC PE NC
0AF4:0104 B300          MOV     BL,00
-t

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AF4  ES=0AF4  SS=0AF4  CS=0AF4  IP=0106   NV UP EI PL ZR AC PE NC
0AF4:0106 FECB          DEC     BL
-t

AX=0000  BX=00FF  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AF4  ES=0AF4  SS=0AF4  CS=0AF4  IP=0108   NV UP EI NG NZ AC PE NC
0AF4:0108 CC            INT     3
2007-3-6 01:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
还有啊MOV AL,5和MOV AL,05H是一样的,但写成MOV AL,05H其实是明确了进制和位数啊,是个良好的习惯.否则有一天出现MOV AL,10的情况,就不知道你的意思到底是十进制的10还是十六进制的10H了.而这两者是不同的.对齐位数也是同样重要的.高低字节情况一目了然,防止出错.
2007-3-6 02:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
MOV     BL,00
DEC     BL
两条指令的执行结果是CF仍没变化,ZERO标志又置回了非零,PL位变成了NG状态了

PL变NG是符号位置1了.估计是成负数了吧?呵呵.
2007-3-6 23:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
最初由 dblfloat 发布
MOV BL,00
DEC BL
两条指令的执行结果是CF仍没变化,ZERO标志又置回了非零,PL位变成了NG状态了

PL变NG是符号位置1了.估计是成负数了吧?呵呵.


楼主应该向dblfloat学习,一些问题到论坛上问,不如自己试验一下就知道了
2007-3-7 10:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
向dblfloat学习,对这些容易出错的地方,是个不错的方法!
2007-3-7 11:44
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
利其器很重要. emu8086学习汇编的好工具.自己多调试就都明白了.
2007-3-7 21:21
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
emu8086这个程序我用过,好多汇编程序运行不了。不过它自己的程序运行还不错。
2007-3-7 21:41
0
游客
登录 | 注册 方可回帖
返回
//