马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 decoder 于 2014-5-19 10:30 编辑 assume cs:code
data segment
db 'Welcome to masm!',0
data ends
code segment
start: mov dh,8 ;行循环
mov dl,3 ;列循环
mov cl,2 ;cx_0颜色值
mov ax,data ;把data的地址值给ax
mov ds,ax ;ds:0->data
mov si,0 ;ds:si->data[0]
mov bx,0
call show_str
mov ax,4c00h
int 21h
show_str: ;mov bp,sp
; push dx ;sp=sp-2 此时bp与sp相差2
;push cx ;保存颜色值 此时bp与sp相差4 疯了
mov ax,0b80ah
mov es,ax
mov di,10h
mov bx,0
call printcol
ret
display: mov cx,10h ;cx=16
mov si,0
;mov ax,ss:[bp-4];此处索引颜色值
smem: push ds:[si]
pop es:[di+bx] ;打入字符
mov byte ptr es:[di+bx+1],2 ;打入颜色 无奈
xor ax,ax
inc si
add di,2
loop smem
ret
printline: ;mov dx,ss:[bp-2] ;索引列循环
mov cx,3 ;此处编译器让人很无奈,用Dl赋值就是不行
;mov dx,0
line: push cx
call display
add bx,16 ;填充空格
pop cx
loop line
ret
printcol: ;mov dx,ss:[bp-2] ;索引行循环
mov cx,8 ;此处编译器让人很无奈,用Dh赋值就是不行
printf: push cx
call printline
add di,176 ;换行
pop cx
loop printf
ret
code ends
end start
运行结果
在栈中索引出错,一直无法正确执行,求高人指点一二
|