检测比较结果条件转移指令

1
2
3
4
5
if(ah==ah){
ah=+ah;
}else{
ah=+bh;
}

对应的汇编命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
assume cs:code

code segment
start: mov ah,1h
mov bh,1h

cmp ah,bh
je s
add ah,bh
jmp ok

s: add ah,ah
ok: mov ax,4c00h
int 21

code ends
end start

2)统计data段中的数值为8的字节个数,用ax保存统计结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
assume cs:code
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,8

s: cmp byte ptr [bx],8
jne next
inc ax
next: inc bx
loop s

mov ax,4c00h
int 21
code ends
end start

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	assume cs:code
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,8

s: cmp byte ptr [bx],8
je ok
jmp short next
ok: inc ax
next: inc bx
loop s

mov ax,4c00h
int 21
code ends
end start

3)统计data段中数值大于8的字节的个数,用ax保存统计结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
assume cs:code
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,8

s: cmp byte ptr [bx],8
ja ok
jmp short next
ok: inc ax
next: inc bx
loop s

mov ax,4c00h
int 21
code ends
end start

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
assume cs:code
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,8

s: cmp byte ptr [bx],8
jna next
inc ax
next: inc bx
loop s

mov ax,4c00h
int 21
code ends
end start

4)统计data段中数值小于8的字节个数,用ax保存统计结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
assume cs:code
data segment
db 8,11,8,1,8,5,63,38
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,8

s: cmp byte ptr [bx],8
jnb next
inc ax
next: inc bx
loop s

mov ax,4c00h
int 21
code ends
end start