汇编:and or指令

https://blog.csdn.net/qq_39419087/article/details/79241640

and就是与运算,两个数按二进制位相与,全1为1,有0为0,

常用于把低位清零,例如指令 AND 0xfffffff0,%esp 将esp地址最后一位(16进制,即二进制下的4位)设为0

(1)例如指令:

mov al,01100011B
and al,00111011B

执行后:al=00100011B

(2)例如指令:

mov al,01100011B
or al,00111011B

执行后:al=01111011B

 

理解:

1 && 1 = 1         0 && 0 = 0       A && A = A

0 || 0  = 0           1 || 1 = 1         A || A = A           

 

 

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是一个简单的 x86 汇编语言实现的计算器,可以进行加、减、乘、除运算: ```assembly section .data prompt1 db "Enter the first number: ", 0 prompt2 db "Enter the second number: ", 0 prompt3 db "Result: ", 0 plus db "+", 0 minus db "-", 0 times db "*", 0 divide db "/", 0 section .bss num1 resb 5 num2 resb 5 result resb 5 section .text global _start _start: ; First number input mov eax, 4 mov ebx, 1 mov ecx, prompt1 mov edx, 20 int 0x80 mov eax, 3 mov ebx, 0 mov ecx, num1 mov edx, 5 int 0x80 ; Second number input mov eax, 4 mov ebx, 1 mov ecx, prompt2 mov edx, 23 int 0x80 mov eax, 3 mov ebx, 0 mov ecx, num2 mov edx, 5 int 0x80 ; Convert num1 and num2 to integer mov eax, num1 call atoi mov ebx, eax mov eax, num2 call atoi mov ecx, eax ; Calculate the result mov eax, ebx add eax, ecx ; or sub, mul, div mov [result], eax ; Output the result mov eax, 4 mov ebx, 1 mov ecx, prompt3 mov edx, 8 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, result mov edx, 5 int 0x80 ; Exit mov eax, 1 xor ebx, ebx int 0x80 ; atoi: Convert string to integer ; Input: EAX -> pointer to string ; Output: EAX -> integer value atoi: push ebp mov ebp, esp push ebx xor eax, eax ; Initialize result to 0 mov ebx, 10 ; Initialize base to 10 .loop: movzx ecx, byte [eax] ; Get the next character cmp ecx, 0 ; Check for end of string je .done sub ecx, '0' ; Convert to integer mul ebx ; Multiply by base add eax, ecx ; Add to result inc eax ; Increment pointer jmp .loop .done: dec eax ; Point back to last digit pop ebx mov esp, ebp pop ebp ret ``` 在这个例子中,我们使用了 x86 汇编语言的一些基本指令,例如 mov、add、sub、mul、div 等等。主要实现的流程是: 1. 提示用户输入第一个数字; 2. 读取用户输入的第一个数字; 3. 提示用户输入第二个数字; 4. 读取用户输入的第二个数字; 5. 将这两个数字转换为整数; 6. 进行加减乘除等数值运算; 7. 输出结果; 8. 退出程序。 这个程序只是一个简单的例子,实际上可以扩展为更复杂的计算器,例如支持浮点数、支持多种运算符、支持括号等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安安csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值