您的位置:首页 > 其它

使用汇编语言显示字符串

2012-10-23 13:02 260 查看
assume cs:code, ds:data
data segment
db 'welcome to masm!', 0
data ends

code segment
start:    mov ah, 8
mov al, 3
mov cl, 2
mov ax, data
mov ds, ax
mov si, 0
call show_str

mov ax, 4c00h
int 21h

; 名称:show_ptr
; 功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
; 参数:(dh)=行号(1~25), (dl)=列号(1~80)
;      (cl)=颜色, ds:si指向字符串的首地址
show_str: push cx
push si

mov al, 0A0h                ; 每行是80*2

dec dh                     ; 行号在显存的下标从0开始
mul dh                      ; (ax) = (al)*(dh)

mov bx, ax

mov al, 2
mul dl
sub ax, 2                    ; 行号在显存的下标从0开始

add bx, ax                   ; bx存放的是行和列的偏移地址

mov ax, 0b800h
mov es, ax                   ; es中存放的是显存的第0页(共0-7页)的起始段地址

mov di, 0                    ; di指向显存的偏移地址

mov al, cl                   ; al保存颜色

mov ch, 0
s:      mov cl, ds: [si]
jcxz ok
mov es:[bx][di], cl             ; 偶数地址存放字符
mov es:[bx][di+1], al             ; 奇数地址颜色属性

inc si
add di, 2
jmp short s

ok:      pop si
pop cx
ret

code ends
end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐