汇编中add和inc的问题
今天想和大家探讨一个问题,add和inc的区别有哪些?今天我也是因为一个汇编程序中遇到了。题目是在显示器的中央打印出'a'-'z',我使用的是add ah, 1,但是这样有一个问题,
那就是只打印出了一个a,然后循环完毕。当我把这句汇编修改成了inc ah的时候,它居然能够从‘a’-‘z'全部打印出来。代码如下:
1、
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov bx, stack
mov ss, bx
mov sp, 128
mov bx, 0b800h
mov es, bx
mov ah, 'a'
s: mov es:[160 * 12 + 40 *2], ah
call replay
cmp ah, 'z'
;inc ah
add ah, 1;对标志位的影响
jna s
mov ax, 4c00h
int 21h
replay: push ax
push dx
mov ax, 0
mov dx, 10
s1: sub ax, 1
sbb dx, 0
cmp ax, 0
jne s1
cmp dx, 0
jne s1
pop dx
pop ax
ret
code ends
end start
上面的代码只能打印出'a'。
2、
assume cs:code
stack segment
db 128 dup (0)
stack ends
code segment
start: mov bx, stack
mov ss, bx
mov sp, 128
mov bx, 0b800h
mov es, bx
mov ah, 'a'
s: mov es:[160 * 12 + 40 *2], ah
call replay
cmp ah, 'z'
inc ah
;add ah, 1;对标志位的影响
jna s
mov ax, 4c00h
int 21h
replay: push ax
push dx
mov ax, 0
mov dx, 10
s1: sub ax, 1
sbb dx, 0
cmp ax, 0
jne s1
cmp dx, 0
jne s1
pop dx
pop ax
ret
code ends
end start
2号代码能够从’a‘-’z‘完整打印出来,我也查了很多资料说,add影响cf、sf、of等寄存器,inc只影响pf寄存器。在代码中显示之后就push了,并且在后面的操作完成之后也会pop,这样ah的最高位还是0才对。没有什么影响啊。但是为什么显示不出来呢?
汇编中add和inc的问题相关推荐
- 8086汇编中mov,add,sub语法
8086汇编中mov,add,sub语法 mov,add,sub三个都是两个操作数 几个必要的元素 1.数据 2.寄存器(指定一般寄存器) 3.段寄存器 4.内存单元 mov指令 mov 寄存器,数据 ...
- 逆向知识十三讲,汇编中数组的表现形式,以及还原数组
讲解数组之前,要了解数组的特性 1.数据具有连续性 2.数据类型相同 比如: int Ary[3] = {0,1,2}; 我们可以看出,上面定义的数组,数据是连续的,其中每个数据类型大小都是int类型 ...
- 无符号数、有符号数、补码在汇编中的运用及相关注意事项
1.原码.反码.补码知识的复习: 三者的最高位均为符号位.我以前一直没弄明白的是为何8位补码的表示范围是-128~127,今天查阅了相关资料,于此记下. 仍然以8位为例: 原码的表示范围:-127~- ...
- 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)
From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...
- 汇编中寄存器加[]的意思
一般说来,加方括号 [ ] 表示一种间接的取操作数方式,有点类似于C语言中的指针概念. 第一条指令 ADD AL ,[SI] 中,[SI] 表示寄存器间接寻址. 也就是说,与AL中内容相加的加数,不是 ...
- 逆向知识第七讲,三目运算符在汇编中的表现形式,以及编译器优化方式
一丶编译器优化方式 首先说一下编译器优化方式. 1.常量折叠 2.常量传播 3.复写传播 4.公共表达式 5.去掉不可达到分支 6.顺序代替分支 7.数学变化 8.代码外提 9.减少变量. 10 强度 ...
- 汇编中浮点栈寄存器st0~st7浮点计算fld压栈再计算的过程运行原理
目录 为什么浮点数不能用普通的数学指令计算 结论 用普通的数学计算add无法实现浮点数加法.必须使用浮点数计算指令fadd来进行浮点数加法计算. fpu的概念 浮点数计算需要先用fld指令压栈用fld ...
- ARMv8 A64 汇编中立即数范围问题分析
问题描述 ARMv8 A64汇编中,立即数是如何表示的?不同的指令对于立即数的表示有差异吗? 在Stackoverflow上发现类似的讨论:https://stackoverflow.com/ques ...
- 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...
From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...
- 汇编中参数的传递和堆栈修正
在 Win32汇编中,我们经常要和 Api 打交道,另外也会常常使用自己编制的类似于 Api 的带参数的子程序,本文要讲述的是在子程序调用的过程中进行参数传递的概念和分析.一般在程序中,参数的传递是通 ...
最新文章
- SSM实现个人博客-day01
- 如何用Seaborn描绘线图,分面网格关联图,密度图,连接图,热力图,线性回归图,分面网格绘图
- 2008哲思自由软件峰会
- mac osx 下的 mysql_Mac OSX下的MySQL数据库升级
- Windows IP测试小脚本
- 【kafka】Kafka 之 Group 状态变化分析及 Rebalance 过程
- C语言和设计模式(之开篇)
- 为什么越有钱的人负债越多?
- ISP浅谈-Demosaic
- 用swich语句查看水果的价格
- 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面
- 计算机数值方法知识,计算机数值方法.pdf
- 数组元素循环左移n个位置(JAVA)
- Yolo-v3算法改进-Poly-Yolo-v3
- 【玩转开源】Linux C 检测网口热插拔
- MyBatis框架学习笔记01:初生牛犊
- SQL研习录(24)——CHECK约束
- mp4格式怎么转换成gif格式?简单3步完成视频制作gif
- java游戏代码潜艇大战_java游戏之潜艇大战
- 赖霖枫:我要让身边的人资产超千万