;test 和 and 区别在于不改变op1
;shr 如果要多移几次 mov cl, 4 shr dl, cl
;判断数组里正负数 并分开存放
assume cs:code, ds:data
data segment
m db 1, 2, -3, 4, 5, -6, 7, 8, -9, 10, 11, -12, 13, 14, -15, 16, 17, -18, 19, 20
p db 20 dup(?)
n db 20 dup(?)
data ends
code segment
start:
mov ax, data
mov ds, ax
lea si, p ;正数计数
lea di, n ;负数计数
lea bx, m
xor ax, ax
xor dx, dx
mov cx, 20
l1:
mov al, [bx]
test al, 80h
jz l2 ;Z 运算结果为零时 Z = 1
mov [di], al ;z = 1 说明符号位为1 即为负数
inc bx
inc di
inc dh
jmp l3
l2: ;Z = 0 说明是正数
mov [si], al
inc bx
inc si
inc dl
l3:
loop l1
mov cx, 2
l5:
push cx
mov bl, dl
mov cl, 4
shr dl, cl
pop cx
and dl, 0fh
cmp dl, 10
jb l4
add dl, 7
l4:
add dl, 30h
mov ah, 2
int 21h
mov dl, bl
and dl, 0fh
cmp dl, 10
jb l6
add dl, 7
l6:
add dl, 30h
mov ah, 2
int 21h
mov dl, 0ah
mov ah, 2
int 21h
mov dl, 0dh
mov ah, 2
int 21h
mov dl, dh
loop l5
mov ah, 4ch
int 21h
code ends
end start
汇编实验(二)
最新推荐文章于 2019-01-10 21:41:00 发布