在汇编语言中,字符串的显示是很重要的,也是经常要被调用的,所以最好写一个通用的显示子函数,下面我提供一个自己写的显示的子函数
assume cs:code, ds:data
data segment
db 'ok!', 0
data ends
code segment
start: mov dh, 8 ;行数
mov dl, 3 ;列数
mov cl, 2 ;颜色
mov ax, data
mov ds, ax
call show_str ;跳转到子函数
mov ax, 4C00H
int 21H
show_str: push ax
push cx
push si
push bx
push es
push dx ;用栈将行数和列数保存起来
mov bp, sp ;将栈指针给bp,在没有说明bp作为内存什么段地址的偏移地址时,默认是在栈段中
mov al, [bp + 1] ;[bp+1]是行数
mov ah, 0
mov bx, 160 ;这里的160是每一行的最大字节数
mul bx
mov si, ax ;做了16位乘法算法后,dx的值已经被改变