《汇编语言》学习(十一)标志寄存器
来源:互联网 发布:贵州广电网络怎么缴费 编辑:程序博客网 时间:2024/04/30 14:13
本章主要学习X86汇编语言中的各个标志寄存器及其作用。我将在本文用一张思维导图总结它的知识点,并给出所有的习题答案。
一、知识图谱
二、习题
检测点11.1
sub al,al ZF=1,PF=1,SF=0 al=00000000bmov al,1 ZF=1,PF=1,SF=0 al=00000001bpush ax ZF=1,PF=1,SF=0 al=00000001bpop bx ZF=1,PF=1,SF=0 bl=00000001badd al,bl ZF=0,PF=0,SF=0 al=00000010badd al,10 ZF=0,PF=1,SF=0 al=00001100bmul al ZF=0,PF=1,SF=1 al=10010000b
这道题需要注意的是:
1)运算类的指令,如add、sub、mul、div、inc、dec、or、and等,它们会影响标志寄存器;而转移类的指令,如mov、push、pop不会影响标准寄存器。
2)SF记录的只是在计算机中存放的相应位数的结果的正负,不代表真正的结果正负。如al,只看第7位的值。
检测点11.2
sub al,al CF=0,OF=0,SF=0,ZF=1,PF=1 al=00000000bmov al,10H CF=0,OF=0,SF=0,ZF=1,PF=1 al=00000010badd al,90H CF=0,OF=0,SF=1,ZF=0,PF=1 al=10100000bmov al,80H CF=0,OF=0,SF=1,ZF=0,PF=1 al=10000000badd al,80H CF=1,OF=1,SF=0,ZF=1,PF=1 ax=1 00000000bmov al,0FCH CF=1,OF=1,SF=0,ZF=1,PF=1 al=11111100badd al,05H CF=1,OF=1,SF=0,ZF=0,PF=1 ax=1 00000110bmov al,7DH CF=1,OF=1,SF=0,ZF=0,PF=1 al=01111101badd al,0BH CF=0,OF=0,SF=1,ZF=0,PF=1 al=10001000b
这道题除了需要同上一道题一样注意那两点外,还要考虑“进位或溢出”。此外,总结一下,不管是SF,还是ZF或PF,都只是存放相应位数的结果的正负。所以,这些标志寄存器,就单个而言,都是代表逻辑结果,不代表真实的结果。
检测点11.3
a.统计F000:0处32个字节中,大小在[32,128]的数据的个数
mov ax,0f000h mov ds,ax mov bx,0 mov dx,0 mov cx,32 s:mov al,[bx] cmp al,32 jb s0 cmp al,128 ja s0 inc dx s0:inc bx loop s
b.统计F000:0处32个字节中,大小在(32,128)的数据的个数
mov ax,0f000h mov ds,ax mov bx,0 mov dx,0 mov cx,32 s:mov al,[bx] cmp al,32 jna s0 cmp al,128 jnb s0 inc dx s0:inc bx loop s
本题考察的是:cmp、标志寄存器的相关位、条件转移指令三者的配合应用。
注意:inc指令不改变标志寄存器。
检测点11.4
mov ax,0push axpopf ;all flags are 0mov ax,0fff0hadd ax,0010h ;result = 1 00000000 00000000bpushfpop ax ;ax=0000 1000 0100 0101band al,11000101B ;ax=0000 1000 0100 0101badd ah,11111000B ;ax=0000 1000 0100 0101b
ax=845H
实验11
编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转换为大写字母。
assume cs:codesgdatasg segment db "Beginner's All-purpose Symbolic Instruction Code.",0datasg endscodesg segment begin:mov ax,datasg mov ds,ax mov si,0 call letterc mov ax,4c00h int 21h letterc:push si push axsub ax,ax s:mov al,[si]cmp al,0je okcmp al,61hjb s0cmp al,7ahja s0and al,11011111bmov [si],al s0:inc sijmp s ok:pop axpop si retcodesg endsend begin
说明:
1,本题考察多cmp指令、标志寄存器和条件转移指令的综合应用——确定字符的范围。
2,本题关于大小写转换的技术,可以参考第7章。
3,本题的测试字符串是“BASIC”的展开。
0 0
- 汇编语言学习笔记(十一)标志寄存器
- 《汇编语言》学习(十一)标志寄存器
- 王爽 《汇编语言》 读书笔记 十一 标志寄存器
- 汇编语言学习第十一章-标志寄存器
- x86 汇编语言标志寄存器
- 汇编语言-标志寄存器
- 汇编语言之标志寄存器
- 王爽《汇编语言》(第二版) 学习笔记 (第十一章 标志寄存器)
- 王爽《汇编语言》(第二版) 学习笔记 (第十一章 标志寄存器)
- <学习笔记>王爽汇编语言__标志寄存器
- -------汇编语言--标志寄存器--转移指令---
- 汇编语言常用的标志寄存器
- 《汇编语言》(王爽著)第11章 标志寄存器
- 《汇编语言》学习(二)寄存器
- 汇编语言10——标志寄存器
- Inter汇编语言程序设计之标志寄存器状态标志
- 汇编语言学习笔记1.0-(基础知识、寄存器)
- (11)标志寄存器
- 手机升级到iOS10之后,用xcode8以下的怎样解决真机调试的问题
- android起始页面与Handler(异步线程处理)
- 浅谈iOS延迟执行的几种方式以及比较
- fopen与fopen_s的区别
- 公式编辑器中有几种不同的省略号
- 《汇编语言》学习(十一)标志寄存器
- 本地 Mac 搭建 IPv6 测试环境
- PHP中fopen,file_get_contents,curl函数的区别和性能
- Intellij IDEA的Facets和Artifacts
- C# ToolStrip浮动工具栏及上/下/左/右 停靠
- build.gradle配置记录一
- pause命令
- Android testview editText 输入价格(0.00的格式)和件数(没有小数)的监听器
- linux内核中的list.h文件中线性链表的分析(二)