当前位置:网站首页>汇编语言学习(七)
汇编语言学习(七)
2022-08-09 13:30:00 【目标是技术宅】
本部分主要为王爽《汇编语言》第11章标志寄存器一些指令的用法举例。
1.adc进位加法指令探索:
注意使用不影响CF位的语句
需要注意的点:
1.子程序的结构:
先把所有要用到的寄存器入栈,在程序结束后出栈
2.设置好CF的值:
令sub ax,ax提前将CF的值清零
使用inc和loop调整偏移地址,而不用add,防止影响CF的值
add128: push ax
push cx
push si
push di
push bx
sub ax,ax
mov cx,8
s: mov ax,[si]
adc ax,[di]
mov [bx],ax
inc di
inc di
inc si
inc si
inc bx
inc bx
loop s
pop bx
pop di
pop si
pop cx
pop ax
ret2.cmp指令配合使用
统计data段中数值为8的字节的个数。
思路是,如果不相等就跳过计数部分。
mov bx,0
mov ax,0
mov cx,8
s: cmp byte ptr [bx],8
jne next
inc ax
next: inc bx
loop s统计数值大于8的字节个数:jna next
统计数值小于8的字节个数:jnb next
3.串指令的使用
mov ax,data
mov ds,ax
mov es,ax
mov di,0
mov si,16
mov cx,8
cld
rep movsw4.关于popf和pushf
通过这两个指令,就可以取出或修改标志寄存器的值
下面程序执行后,ax为多少?
mov ax,0
push ax
popf ;标志寄存器为0
mov ax,0fff0h
add ax,0010h ;ax = 0 ZF为0,PF为1,CF为1,OF为0,SF为0
pushf
pop ax ;ax等于标志寄存器的值
and al,11000101B
and ah,00001000B得到ax=00000000_01000101即0045h
边栏推荐
猜你喜欢
随机推荐
Jetpack Compose——remember、mutableStateOf、rememberSaveable
2个有序数组排序
响应式pbootcms模板仪表水表类网站
openharmony容器组件之Counter
C语言,if循环 for 循环 while循环 switch循环 do...while()循环
Es7.x使用RestHighLevelClient进行查询操作
零基础学习CANoe Panel 设计目录
Jetpack Compose——Image(图片)的使用
C语言中的 递归问题 以及将递归改写成非递归。(解析常见的几个递归题目及代码) 求阶乘、求斐波那契、汉诺塔、
【ClickHouse】 日志清理方法(query_log、query_thread_log)
目标检测类间不平衡问题
String为什么是不可变的?
SEATA分布式事务框架解析
Talking about CQRS Mode
Sql之各种Join
C语言中的 pow 函数 使用方法及注意事项,和常见报错原因,且分享实战中的使用
KMP方法
typeorm 批量插入数据优化和插入冲突操作
蓝桥杯嵌入式(STM32F103RBT6)最全攻略(一)
响应式pbootcms模板建材家居类网站









