网安中一些简单的知识点

5.1常用控制类汇编指令

1.JMP标志

无条件转义指令,跳到标志处去

标志:label1:  名字任意后面价格冒号,之后就可以写跳转后的代码

2.条件转移

(1)JC:若CF=1则转,JNC相反

(2)JZ/JE:ZF=1则转移,/表示JZ与JE等效,同样加个N表示相反的

(3)JS:SF则转,JNS相反

(4)JO:OF则转,JNO相反

(5)JP/JPE:PF=1则转,JNP/JPO相反

3、无符号数比较转移指令,和CMP搭配使用

(1)JA/JNBE:若CF=ZF=0,(被减数大于减数),则转移

(2)JAE/JNB:若CF=0(被减数大于或等于减数),则转移

(3)JB/JNAE:若CF=1(被减数小于减数),则转移

(4)JBE/JNA:若CF=1或ZF=1(被减数小于或等于减数),则转移

4、有符号数比较转移指令

(1)JG/JNE:SF=OF且ZF=0,则转移

(2)JGE/JNL:若SF=OF

(3)JL/JNGE:SF!=OF

(4)JLE/JNG:SF!=OF或ZF=1

5、loop指令

用于控制计数循环,作为循环的最后一条指令,计数器指定CX,采用减1技术,CX=0时循环结束。Loop转移是段内短距离转移。

指令

名称

常用格式

JMP

无条件跳转

Jmp

JC

条件跳转

CF=1则跳转

JZ

条件跳转

ZF=1则跳转

JO

条件跳转

OF=1则跳转

JP

条件跳转

PF=1则跳转

LOOP

循环

Cx为标志,每次减一

5.2编程实现统计寄存器AX中“1”“0”个数;

assume cs:code

code segment

start:

mov al,10100101B

xor bx,bx

mov cx,4

circle:

rol al,1;循环左移,最左边的一位 被输入到了CF

jc BitSet;jc判断(CF)进位标志位是否为1,为1则跳转

inc bh

loop circle

jmp CountOver

BitSet:

inc bl

loop circle

CountOver:

mov ch,bh

mov cl,bl

mov ax,4C00H

int 21H

code ends

end start

有一个1,CF标志寄存器就会修改

代码实现:

assume cs:code,ds:data

data segment

db '1. file         '

db '2. edit         '

db '3. search       '

db '4. view         '

db '5. options      '

db '6. help         '

data ends

code segment

start:

mov ax,data

mov ds,ax

mov bx,0

mov cx,6

s:

  mov ax,3[bx]

  and ax,11011111b

  mov 3[bx],ax

  add bx,16

  loop s

mov ax,4c00h

int 21h

code ends  

end start

5.3编程实现从键盘输入10个1整数

代码实现:

assume cs:code,ds:data

data segment

db '1. file         '

db '2. edit         '

db '3. search       '

db '4. view         '

db '5. options      '

db '6. help         '

data ends

code segment

start:

mov ax,data

mov ds,ax

mov bx,0

mov cx,6

s:

  mov ax,3[bx]

  and ax,11011111b

  mov 3[bx],ax

  add bx,16

  loop s

mov ax,4c00h

int 21h

code ends  

end start

5.4编程实现从键盘输入两个10进制2位整数的和

assume cs:code,ds:data

data segment

  db 'welcome to masm!'

  db '................'

data ends

code segment

start:

mov ax,data

mov ds,ax

mov si,0

mov di,16

mov cx,8

s:

  mov ax,[si]

  mov [di],ax

  inc si

  inc si

  inc di

  inc di

  loop s

mov ax,4c00h

int 21

code ends

end start

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值