|

楼主 |
发表于 2013-10-12 23:19:13
|
显示全部楼层
福禄娃娃 发表于 2013-10-12 23:14
除了ip和psw其他寄存器都可以压栈
assume cs:code,ss:stack
stack segment
db 256 dup (0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,256;ss:sp指向栈低
mov ax,2
push ax ;把2压入栈
call setscreen; 调用函数
mov ax,4c00h
int 21h
setscreen:
pop ax;把2弹出栈
mov bx,0b800h
mov ds,bx
mov bx,1;ds:[bx]指向0b800:1
mov cx,2000;cx计2000次数
cmp ax,0;ax和0比较
je s23;比较相等就跳转
cmp ax,1;ax和1比较
je s22;比较相等就跳转
cmp ax,2;ax和2比较
je s222 ;比较相等就跳转
s23: mov dl,00000000b
ss2: mov byte ptr [bx],dl
add bx,2
loop ss2
jmp short end2
s22: mov dl,01000000b
s2: mov byte ptr [bx],dl
add bx,2
loop s2
jmp short end2
s222: mov dl,00100000b
ssss2: mov byte ptr [bx],dl
add bx,2
loop ssss2
end2:
pop dx
pop cx
pop bx
ret
code ends
end start |
|