丁辉汇编-7-分支程序设计-习题

这篇博客探讨了在汇编语言中如何处理5字节无符号数的表示,涉及存储和进位问题。通过使用EAX和EDX寄存器存储高低四位,讨论了数据导入和可能的溢出情况。文章还介绍了如何用AL寄存器接收键盘输入,并设计了一个简单的判断流程,根据输入的字符(a, b, c)进行不同操作,未满足条件时重新获取输入。" 44724255,4891219,使用vim编译C++:环境配置与快捷操作,"['vim编辑器', 'C++编程', '环境变量配置', 'MinGW', '代码编辑']
摘要由CSDN通过智能技术生成
 1 
mov al, 60h
cmp al, 0bbh
jb l2

l1:
mov al, 0bbh
l2:
NOP
分析:
1 jb因此是无符号数
2 60<bb 因此,成立
3 al最后为60h
mov al, 60h
cmp al, 0bbh
JL l2

l1:
mov al, 0bbh
l2:
NOP
有符号数
60正数大于负数bbh,因此不满足条件
al结果为bbh
xor al, al
mov bl, 98h
add bl, 88h
jnc L2

L1:
INC AL;
L2: NOP
jnc判断有没有进位,无进位跳转,
这里有进位,因此不转。al=01
xor al, al
mov bl, 98h
add bl, 88h
jnc L2

L1: 
INC AL;
L2: NOP
判断有没有溢出,明显有。
故同样不转。
mov al,1
mov bl, 72h
add bl, 40h
jc L2

L1: xor al, al
L2: nop
判断进位,没有,不转,=0
mov al,1
mov bl, 72h
add bl, 40h
jo L2

L1: xor al, al
L2: nop
72+40H 有溢出?这个时候,要把两个数
当做有符号数来看待。一个字节的最大有符号值时127,因此溢出了。结果=0
mov bl, 46h
test bl, 01h
jz l2
test 是看看最低位是否为0,这里6=0110并不是1,因此jz不跳转。al被L1清空=0
mov bl, 46h
test bl, 0FFh
jNP l2
test是与and一致的操作,只是同cmp一样不影响目的操作数,只影响标志寄存器FLAGS。
JP和JNP是判断1的个数是否是偶数。这里怎么判断呢?其实就是看多少个1,这里46=01000110,3个1,奇数,因此JNP转,就会让al=1了


2
 mov al,x
cmp al,0
jz zero
jl nega
mov al,1
jmp ok

zero:
xor al, al
jmp ok

NEGA: MOV al, 0ffh

3 找三者得最大值:1240h(有符号数,9cc0h为负数)

4 把三个连续存放的单字节无符号数按递增次序重新存放在原存储位置

分析:
1 定义三个连续存放的单字节db数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值