05_12.asm
来自「清华大学计算机系汇编语言课程」· 汇编 代码 · 共 65 行
ASM
65 行
;05_12.asm
;Created by RunningOn Chen.
;2003011434 J34 CS dept, THU
;2005-11-15
;本程序不输出答案,要在debug下才能看出结果
datas segment
data dw 11,12,13,14,15,00,17,18 ;8 numbers
dw 21,22,23,00,25,26,27,28
dw 31,32,33,34,25,00,27,28
dw 41,00,43,44,25,26,27,28
dw 51,52,53,54,00,26,27,28
dw 61,62,63,64,25,00,27,28
dw 71,72,00,74,25,26,27,28
dw 00,82,83,00,25,00,27,28
dw 91,92,00,94,25,26,27,00
dw 01,02,03,04,25,26,00,28
dw 71,72,00,74,25,26,27,28
dw 00,82,83,00,25,00,27,28
dw 01,00,03,04
datas ends
code segment
main proc far
assume ds:datas, cs:code
start:
push ds
mov ax, 0
push ax
mov ax, datas
mov ds, ax
mov es, ax ;di与es配合
mov di, 0
mov si, di
cycle: ;for (si = di = 0 ; si < 200 ; si +=2)
mov ax, data[si] ;{
test ax, 0ffffh ; if (data[si] == 0)
jz continue ; continue;
mov data[di], ax ; data[di] = data[si];
add di, 2 ; di += 2
continue: ;}
add si, 2
cmp si, 200
jl cycle
cmp di, 200
jge exit
add_zero: ;注意此时di即有效地址
mov cx, di
sub cx, 200
neg cx ;cx = 200 - di
shr cx, 1k
mov ax, 0h
cld
rep stosw ;补0
exit:
ret
main endp
code ends
end start
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?