📄 05_19.asm
字号:
;05_19.asm
;Created by RunningOn Chen.
;2003011434 J34 CS dept, THU
;2005-11-15
;
;不允许用C作标识符,所以换成了D
;本程序不输出答案,要在debug下才能看出结果
data segment
A dw 80, 79, 69, 98, 87, 89, 94, 65, 74, 83, 82, 79, 85, 81, 20
B dw 80, 19, 29, 98, 28, 89, 94, 36, 44, 12, 18, 59, 45, 81, 84, 174, 169, 475, 476, 484
D dw 20 dup(?)
A_NUM equ 15
B_NUM equ 20
data ends
stack segment stack
db 100 dup(?)
stack ends
code segment
main proc far
assume ds:data, cs:code
start:
push ds
mov ax, 0
push ax
mov ax, data
mov ds, ax
mov di, 0
mov si, 0 ;
cycle: ;for (di = si = 0 ; si < A_NUM * 2 ; si+=2)
mov ax, A[si] ;{
call is_exist ; ax = A[si];
jnz continue ; if (is_exist(al))
mov D[di], ax ; {
add di, 2 ; C[di] = ax;
continue: ; di += 2;
add si, 2 ; }
cmp si, A_NUM * 2 ;}
jl cycle ;
exit:
ret
main endp
is_exist proc near ;input: ax=(A) output: NZ-nonexist Z-exist
push si ;save si
push bx
mov si, 0 ;
next: ;for (si = 0 ; si < B_NUM * 2 ; si++)
mov bx, B[si] ;{
cmp bx, ax ; bx = B[si];
jz return ; if (ax == bx)
add si, 2 ; return 0;
cmp si, B_NUM * 2 ;}
jl next ;return 1;
mov bx, 0 ;nonexist. make NZ
add bx, 1
return:
pop bx
pop si
ret
is_exist endp
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -