|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qwe1231069 于 2016-9-23 13:32 编辑
从昨天开始编写,今天刚刚完成(其中失败了若干次,太笨了没办法)
主要想问下显存的地址,8行3列不应该是8*160+3*2=1286==506h,我用这个地址结果出来的都是一堆颜色
我改成5后就行了,不太懂。地址从0开始,6不正是个偶字节吗,字符放在偶字节中,不对吗?另外我代码写的太难看了,希望提些改进意见。
- assume cs:code,ds:data
- data segment
- db'welcome to masm!',0
- data ends
- code segment
- 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: mov ax,0b800h
- mov es,ax
- mov bl,dh
- mov bh,0
- mov ax,160
- mul bx
- mov bx,5
- add bx,ax ;bx==要复制的显存地址
-
- mov al,cl
- s: mov ah,ds:[si]
- mov ch,ah
- mov word ptr es:[bx],ax ;ax是复制的值
- inc si
- add bx,2
- mov cl,01
- loop s
- ret
- code ends
- end start
复制代码 |
|