|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- assume cs:code
- 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
- ;计算显存起始偏移地址
- ;偏移地址 = 行数*160+列数*2 注意列数从0开始
- mov ax,160
- mov bl,dh
- and bx,00ffh
- mov cx,dx ;进行16位乘法会占用dx 把dx数据临时存放在cx 调试半天才发现
- mul bx
- mov dx,cx
- mov bp,ax;因为一页显示内存最大偏移量为4000小于65536 所以ax中结果为偏移量
- mov al,2
- mul dl
- add bp,ax ; bx结果为最终的起始偏移地址
- l:
- mov cl,ds:[si]
- mov ch,0
- jcxz r
- mov es:[bp],cl
- mov es:[bp+1],02h
- add bp,2
- inc si
- jmp short l
- r: ret
- code ends
- end start
复制代码
代码编写半小时 调试三小时 |
|