实验10-1 显示字符串
显示字符串
描述:
名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串
参数:(dh)=行号(取值范围0~24)
(dl)=列号(取值范围0~79)
(cl)=颜色
Ds:si指向字符串的首地址
返回:无
编写程序如下:
data segment
db 'welcome to masm!',0
data ends
code segment
assume cs:code
start:mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:
push ax
push bx
push cx
push dx
mov ax,0b800h
;显存入口地址
mov es,ax
mov al,160
mul dh
;行数*160
mov bl,dl
mov bh,0
add bx,ax
;列与行相加得出地址值
s:
push cx
mov al,[si]
mov cl,al
mov ch,0
jcxz ok
;判断取得的是不是0
pop cx
mov es:[bx+1],al
mov es:[bx+2],cl
inc si
inc bx
inc bx
jmp s
ok: pop cx
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
- [rotapple] 哎呀。这个好。 收藏一下。 09/05 10:46
- [suixin] 得出行和列的物理地址这段代码,在思路上比我写的简洁的多,很不错。踩踩 ^_^ 01/12 13:40
- [lcf20092009] pop ax (ax)=8D=0008H add ax,ax (ax)=16D=00 01/07 14:03
- [游客] 踩踩,自己编写的第一个有显示的程序,纪念 ^_^ 12/30 11:12
- [游客] 正确。~ 12/30 11:01
- [游客] 正确结果是ax=1010h 12/30 11:00
- [游客] 正确、 12/30 11:00
- [游客] 答案正确。 12/30 10:59
- [lcf20092009] 上楼的回答是正确,是我理解错了。 12/27 19:58
- [lcf20092009] 错误已更正哈。 12/27 19:18
- [lcf20092009] 作业1.1 1.一个CPU的寻址能力为8K,那么它的地址总线宽度为: 13 。 2.1KB的 12/06 10:46