当前位置:网站首页>逻辑运算指令
逻辑运算指令
2022-07-06 09:29:00 【My71】
循环移位
- 移位是针对寄存器中的二进制数进行移位。
- 在 debug 模式中寄存器里的值均已 16 进制显示。
- 当只移一位的时候,可以将数字 1 放到移动指令的源操作数上。若移动位数大于 1,需要将移动的位数存到 cl 寄存器中。
左移 ROL
将权值最高位移动到全职最低位。
例:0110 左移后得到的结果是 1100
代码实现
- 需求:对 12h 进行向左移一位
- 运行结果:24h。
- 原理:12h = 00010010b,向左移位后得 00100100 即 24h
code segment assume cs:code main: mov bx,12h rol bx,1 edit: mov ah,4ch int 21h code ends end main
右移 ROR
- 将权值最低位移动到全职最高位。
- 例:0110 右移后得到的结果是 0011
逻辑运算
知识点
- 同高级语言的逻辑运算,遵循与或原则。
- 与运算:全真为真,一假为假。
- 或运算:一真为真,全假为假。
- 按位运算指的是按二进制位进行运算。
- 在二进制中,1 表示真,0 表示假。
指令
- 按位与运算:AND
- 按位或运算:OR
- 按位非运算:NOT
- 按位异或运算:XOR
例题
计算 24h 和 36h 的与运算
code segment assume cs:code main: mov bx,24h and bx,36h edit: mov ah,4ch int 21h code ends end main
计算 24h 和 36h 的或运算
code segment assume cs:code main: mov bx,24h or bx,36h edit: mov ah,4ch int 21h code ends end main
保留二进制的末尾数,其他高位清零。
code segment assume cs:code main: mov bx,0ffffh and bx,01h edit: mov ah,4ch int 21h code ends end main
综合应用
保留位和 1 做与运算。
清零位和 0 做与运算。
输出二进制
需求:将寄存器中的值以二进制形式输出到终端。
代码
code segment assume cs:code main: mov bl,12h mov cx,8h lopi: rol bl,1 mov dl,bl and dl,01h add dl,30h call d02 loop lopi mov dl,42h call d02 edit: mov ah,4ch int 21h d02 proc near mov ah,02h int 21h ret d02 endp code ends end main
输出十六进制
需求:将寄存器中的值以十六进制形式输出到终端。
代码
code segment assume cs:code main: mov bl,0a2h mov cx,2 lopi: push cx mov cl,4 rol bl,cl pop cx mov dl,bl and dl,0fh cmp dl,09h jg letter jng number letter: add dl,37h call d02 jmp endcmp number: add dl,30h call d02 endcmp: loop lopi mov dl,48h call d02 edit: mov ah,4ch int 21h d02 proc near mov ah,02h int 21h ret d02 endp code ends end main
边栏推荐
- Codeforces Global Round 19
- Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
- ~69 other ways to use icon fonts
- [unsolved]7-14 calculation diagram
- LeetCode 1557. The minimum number of points that can reach all points
- LeetCode 1640. Can I connect to form an array
- 字节跳动开源GAN模型压缩框架,算力最高节省97.8%丨ICCV 2021
- Thank you for your invitation. I'm in the work area. I just handed in the code. I'm an intern in the next ByteDance
- ByteDance open source Gan model compression framework, saving up to 97.8% of computing power - iccv 2021
- ~81 long table
猜你喜欢
ffmpeg命令行使用
LeetCode 1557. The minimum number of points that can reach all points
Use JQ to realize the reverse selection of all and no selection at all - Feng Hao's blog
字节跳动新程序员成长秘诀:那些闪闪发光的宝藏mentor们
Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
Full record of ByteDance technology newcomer training: a guide to the new growth of school recruitment
7-5 blessing arrived
Usage of insert() in vector
谢邀,人在工区,刚交代码,在下字节跳动实习生
Thank you for your invitation. I'm in the work area. I just handed in the code. I'm an intern in the next ByteDance
随机推荐
Continue and break jump out of multiple loops
Typescript basic operations
was unable to send heartbeat
SQL quick start
I'm "fixing movies" in ByteDance
Shell_ 04_ Shell script
Simple records of business system migration from Oracle to opengauss database
~75 background
The "advertising maniacs" in this group of programmers turned Tiktok advertisements into ar games
Solr new core
~Introduction to form 80
Error: case label `15 'not within a switch statement
Introduction to microservices
[unsolved]7-14 calculation diagram
LeetCode 1641. Count the number of Lexicographic vowel strings
~86m rabbit practice
The 116 students spent three days reproducing the ByteDance internal real technology project
After the subscript is used to assign a value to the string type, the cout output variable is empty.
Soft music -js find the number of times that character appears in the string - Feng Hao's blog
Chapter 5 yarn resource scheduler