汇编条件转移指令

Source

目录

条件转移指令(基本格式)

 简单条件转移指令

区分带符号数和无符号数

  无符号数条件转移指令

比较内存中两个无符号数的大小,显示器输出小的数

内存中三个无符号数,输出最小的

符号数的条件转移指令

内存中有三个字节型带符号数,把最大的送到VAR2这个字节单元

无条件转移指令(配合使用)

练习

总结(把这些记住考试就够用了)


条件转移指令(基本格式)

 简单条件转移指令

区分带符号数和无符号数

  无符号数条件转移指令

比较内存中两个无符号数的大小,显示器输出小的数

技巧:都是保证AL中的数是最小的

DATAS SEGMENT
    VAR1 DB 2,3
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,VAR1
    MOV BL,VAR1+1
    CMP AL,BL
    JB NEXT
    MOV AL,BL
NEXT:
    MOV DL,AL
    ADD DL,30H
    MOV AH,2
    INT 21H
EXIT: 
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

内存中三个无符号数,输出最小的

DATAS SEGMENT
    VAR1 DB 5,2,3
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,VAR1
    MOV BL,VAR1+1
    CMP AL,BL
    JB NEXT
    MOV AL,BL
NEXT:
    MOV CL,VAR1+2
    CMP AL,CL
    JB NEXT1
    MOV AL,CL
NEXT1:
    MOV DL,AL
    ADD DL,30H
    MOV AH,2
    INT 21H
    
EXIT: 
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

符号数的条件转移指令

内存中有三个字节型带符号数,把最大的送到VAR2这个字节单元

技巧跟上面的题一样,保持AL里面存的是最大值就可以

DATAS SEGMENT
    VAR1 DB 5,2,8
    VAR2 DB ?
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,VAR1
    CMP AL,VAR1+1
    JG A1
    MOV AL,VAR1+1
A1: 
    CMP AL,VAR1+2
    JG A2
    MOV AL,VAR1+2
A2:
    MOV VAR2,AL
EXIT: 
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

无条件转移指令(配合使用)

练习

1:条件转移指令JNBE产生转移的条件是()

A:CF=0且 ZF=0    B:CF=0且ZF=1   C:CF=0且ZF0  D:CF=1且ZF=1

2:条件转移指令JNE的测试条件为(ZF=0)

A:ZF=0  B:CF=0   C:ZF=1   D:CF=1

3:编写完整汇编语言程序实现如下功能:

在M单元和N单元分别存有一个8位无符号数36H和95H,要求比较这两个无符号数,并根据比较结果在屏幕上显示M>N或者N>M(假设这两个数不相等)

DATAS SEGMENT
GGG DB 'M>N$'
LLL DB 'N>M$'
M DB 36H
N DB 95H
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,M
    MOV DL,N
    CMP AL,DL
    JB AAAA
    MOV DX,OFFSET GGG
    MOV AH,9
    INT 21H
    JMP EXIT
AAAA:
   MOV DX,OFFSET LLL
   MOV AH,9
   INT 21H  
EXIT:   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

4:

DATAS SEGMENT
X DB -5
Y DB 20
Z DB 0
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV Z,0
    MOV AL,X
    MOV BL,Y
    XOR AL,BL
    JS EXIT;SF=1如果符号位不同,就跳转
    MOV Z,1
    CMP AL,0
    JNS EXIT;如果符号位为0
    NEG Z
EXIT:
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

总结(把这些记住考试就够用了)