- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言学习笔记11
标志寄存器
先来总结一下以前的寄存器的作用:
1 存储相关指令的执行结果
2 为cpu执行相关指令提供的行为依据
3 控制cpu的相关工作方式。
本课学习的标志寄存器也是 16位的,其中存储的信息通常被称为程序状态字(psw)标志寄存器的16位有9位分别表示了不同的状态 如下
0 cf
1
2 pf
3
4 af
5
6 zf
7 sf
8 tf
9 if
10 df
11 of
12
13
14
15
没有表示空白 ,不具备任何含义 ,下面了解一下非空白区的各个含义
zf 零标志位。记录相关指令执行后其结果是否为零,若是结果为零 那么zf=1,否则zf=0;
pf 标志位 奇偶标志位,记录相关指令执行后,其结果的所有二进制位中1的个数是否为偶数,若是偶数那么pf=1,不是偶数那么pf=0;
sf 标志位 符号标志位,记录相关指令执行后,其结果是否为负,如果结果为负,那么sf=1,不为负,sf=0
cf 标志位 进位标志位。一般在无符号运算的情况下,它记录了运算结果的最高有效为向更高位的进位值,或者从更高位的借位值,cf标志位就是标志了是否进行了借位或进位运算,但一定记得是最高有效位。
of 标志位 溢出标志位,我们这里说的溢出仅适用于有符号数,例如对于8位寄存器能表示的数值范围是-128-127,若是超出了这个范围那么就是溢出了。若是有溢出,则of=1,否则of=0;
adc指令--带进位加法指令,他利用了cf为上记录的进位值。
指令格式 adc 操作数一,操作数二
功能 操作对象1=操作数1+操作数2+cf值
例如
mov ax, 2
mov bx, 1
sub bx,ax
adc ax,1
那么 ax最终存储的结果是4由于进行减法运算的时候进行了借位,那么再次进行带进位的加法的时候就要考虑cf的值了。
其实cpu进行数值运算的时候,跟我们进行的运算方法是一样的 ,例如我们进行加法运算的时候,我们先将低位进行相加,在进行高位相加,高位想家的时候我们会把低位运算产生的进位或借位应用到高位上去,例如指令 add ax,bx ;可以分解为
add al,bl adc ah,bh
那么虽然寄存器是16位的,我们也可以进行更高位的运算,例如下面的程序举例:计算1EF000H+201000H,结果存放到ax(高16位)和bx(低16位)中,
分析 :显然这两个数都超过了寄存器的数值表示范围,用add指令无法进行运算,我们可以将他们分步运算。
程序如下:
assume cs:code ,ss:stackstack segment db 16 dup(?)stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16push axpush cxpush bxmov ax,001ehmov bx,0f00hmov cx,1000hadd cx,1ee0hadc bx,1000hadc ax,0020hpop bxpop cxpop axcode endsend start当然我们在程序中本不用去进行进栈出战的操作但是为了保留程序中所用寄存器的原来信息我们就必须进行数据的保存, 另外需要说明的是,inc loop指令不会影响标志位的数值,其他的指令就难说了,
同理我们也会用到带进位的减法指令,add 不作详细说明,
我们需要掌握的一个比较重要的指令就是cmp指令 比较指令
cmp 操作数一 ,操作数二 功能操作数1-操作数2,仅仅进行减法比较并不对运算结结果进行保留,用运算结果来影响标志位。例如
cmp ax,bx
如果 ax=bx 那么zf=0
如果 axbx 那么zf!=0 进而会有 cf=1
呵呵 由此可见一个表达式的值,不仅仅会影响一个标志位,
我们进行cmp指令的比较得到了相应的标志位数值,cpu就会有相应的指令来去进行下一步的运算处理。下面是根据无符号数的比较结果进行转移的条件转移指令
je 等于则转移 zf=1
jne 不等于则转移 zf=0
jb 低于则转移 cf=1
jnb 不低于则转移cf=0
ja 高于等于则转移 zf=0且cf=1
jna 不高于则转移 cf=1或zf=1
其实j代表了jmp e=equal a=above b=blew
都是相应的英文单词的解释,
相应的应用格式 条件转移指令 标号(要想转移到的标号地址)
举例如下
编程实现如下功能 如
您可能关注的文档
最近下载
- 南昌大学1001英语历年考博真题.pdf
- 《电力用磷酸铁锂电池通信电源系统技术规范》.pdf VIP
- 甲苯技术说明MSDS.docx VIP
- 2024义务教育音乐课程标准(2022版)试题及答案.docx
- F 亲爱的此刻我必须离去 Ach Lieb ich muss nun scheiden (Op.21, No.3)钢琴伴奏正谱.pdf
- 《无人机航拍技术》课件—05无人机飞行的法规.pptx VIP
- 2024九江市濂溪区辅警考试真题及答案.docx
- 黑龙江省佳木斯市2025届高三上学期第五次调研考试 地理及答案.pdf VIP
- DB13_T1562-2012人工鱼礁建设技术规范.pdf VIP
- 浪潮倚天超级计算机 NF5288M5 用户手册 V1.0.pdf VIP
文档评论(0)