王爽《汇编语言》第十章实验十 子程序1(show_str) 题目解答
2009-03-18 00:04
411 查看
; 第十章 实验十 练习1
; 子程序描述
; 名称:show_str
; 功能:指定位置,用指定颜色,显示一个用0结束的字符串
; 参数:(dh) = 行号(0--24),(dl) = 列号(0--79)
; (cl) = 颜色,ds:si 指向字符串的首地址
; 返回:无
assume cs:code, ds:data
data segment
db 'Welcome to masm', 0
data ends
code segment
start:
mov ax, data
mov ds, ax
mov dh, 8
mov dl, 3
mov cl, 2
mov si, 0
call show_str
mov ah, 01h ; 不是mov ax, 01h
int 21h
mov ax, 4c00h
int 21h
show_str:
push ax
push bx
push cx
push dx
push es
; 计算好字串开始显示的地址Y = 160*(行数-1) + 列数*2-2, B800 : Y
; 循环将参数里的字串写进显卡内存,并检测到0就返回
; bx = 160*(行数-1)
sub dh, 1
mov al, 160
mul dh
mov bx, ax ; bx 为根据行数算出来的偏移值
; ax = 列数*2-2
;mov bl, dl
mov al, 2
mul dl
sub ax, 2 ; 根据列数算出来的偏移值
add bx, ax ; 行数和列数的和存在bx中了
mov ax, 0b800h
mov es, ax
mov dl, cl ; 保存字体颜色属性
mov ch, 0
s_show_str:
mov cl, ds:[si]
mov es:[bx], cl
jcxz ok_show_str
mov es:[bx+1], dl
inc si
add bx, 2
jmp short s_show_str
ok_show_str:
pop es
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
; 子程序描述
; 名称:show_str
; 功能:指定位置,用指定颜色,显示一个用0结束的字符串
; 参数:(dh) = 行号(0--24),(dl) = 列号(0--79)
; (cl) = 颜色,ds:si 指向字符串的首地址
; 返回:无
assume cs:code, ds:data
data segment
db 'Welcome to masm', 0
data ends
code segment
start:
mov ax, data
mov ds, ax
mov dh, 8
mov dl, 3
mov cl, 2
mov si, 0
call show_str
mov ah, 01h ; 不是mov ax, 01h
int 21h
mov ax, 4c00h
int 21h
show_str:
push ax
push bx
push cx
push dx
push es
; 计算好字串开始显示的地址Y = 160*(行数-1) + 列数*2-2, B800 : Y
; 循环将参数里的字串写进显卡内存,并检测到0就返回
; bx = 160*(行数-1)
sub dh, 1
mov al, 160
mul dh
mov bx, ax ; bx 为根据行数算出来的偏移值
; ax = 列数*2-2
;mov bl, dl
mov al, 2
mul dl
sub ax, 2 ; 根据列数算出来的偏移值
add bx, ax ; 行数和列数的和存在bx中了
mov ax, 0b800h
mov es, ax
mov dl, cl ; 保存字体颜色属性
mov ch, 0
s_show_str:
mov cl, ds:[si]
mov es:[bx], cl
jcxz ok_show_str
mov es:[bx+1], dl
inc si
add bx, 2
jmp short s_show_str
ok_show_str:
pop es
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
相关文章推荐
- 王爽《汇编语言》第十章实验十 子程序2(divdw) 题目解答
- 王爽《汇编语言》第十章实验十 子程序3(dtoc) 题目解答
- 王爽《汇编语言》第十章实验十 子程序2(divdw) 题目解答
- 王爽《汇编语言》第十一章 实验十一 题目解答
- 王爽《汇编语言》实验10:编写子程序divdw 解答
- 王爽《汇编语言》实验10:编写子程序dtoc 解答
- 王爽《汇编语言》第十二章 实验十二 题目解答
- 王爽《汇编语言》实验10:编写子程序divdw 解答
- 王爽《汇编语言》第八章实验七 题目分析解答
- 王爽《汇编语言》实验10:编写子程序show_str 解答
- 王爽《汇编语言》实验16:包含多个功能子程序的中断例程 解答
- 王爽《汇编语言》第十一章 实验十一 题目解答
- 王爽《汇编语言》实验16——编写包含多个功能子程序的中断例程
- 王爽《汇编语言》实验17——编写包含多个功能子程序的中断例程
- 王爽《汇编语言》实验十一:编写一个子程序:将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母
- 王爽《汇编语言》第10章 实验10 编写子程序
- 王爽《汇编语言》实验11:编写子程序letterc 解答
- 《汇编语言(第3版)》王爽 第十章实验
- 王爽《汇编语言》第十章实验之——除法溢出问题
- 王爽《汇编语言》实验11——编写子程序