|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一只et 于 2020-1-10 16:18 编辑
(10.1)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,00a0H
mul dh
mov bx,ax ;定位行数
mov dh,00H
mov di,dx
add di,3 ;准备列数 注意位置
mov dl,cl ;为了使用jcxz把cl让出来
mov ax,0b800H ;b8000H~bffffH
mov es,ax ;打开显示存储空间
s1: mov al,ds:[si] ;放入字符
mov es:[bx+di],al
inc bx
inc si
mov es:[bx+di],dl ;放入颜色
inc bx
mov ch,00H ;准备cx跟字符串一样
mov cl,ds:[si]
jcxz s2
loop s1
s2: ret
code ends
end start
--------------------------------------------------------------------------------分割线-------------------------------------------------------------------------------------
(10.3)assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start: mov ax,54134
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00H
int 21H
dtoc: mov cx,5 ;循环和jcxz用的cx 循环前定义好
mov si,4 ;设好长度 除完顺序是反的
s4: push cx ;推入栈里
mov dx,0000H ;16位除法准备好
mov cx,000aH
div cx
add dx,30H ;字节高位给3H
mov bx,0000H
mov [bx+si],dl ;放入内存单元
sub si,1
pop cx
jcxz s3
loop s4
s3: mov ax,0000H ;用完后做好收尾
mov bx,0000H
mov cx,0000H
mov dx,0000H
mov si,0000H
ret
show_str: mov ax,00a0H
mul dh
mov bx,ax ;定位行数
mov dh,00H
mov di,dx
add di,3 ;准备列数 注意位置
mov dl,cl ;为了使用jcxz把cl让出来
mov ax,0b800H ;b8000H~bffffH
mov es,ax ;打开显示存储空间
s1: mov al,ds:[si] ;放入字符
mov es:[bx+di],al
inc bx
inc si
mov es:[bx+di],dl ;放入颜色
inc bx
mov ch,00H ;准备cx跟字符串一样
mov cl,ds:[si]
jcxz s2
loop s1
s2: ret
code ends
end start |
|