-
-
[旧帖]
[求助]请教各位我这里储蓄哦的原因,一个小程序,里面有详细解释.谢谢了
0.00雪花
-
发表于:
2009-8-4 03:01
2574
-
[旧帖] [求助]请教各位我这里储蓄哦的原因,一个小程序,里面有详细解释.谢谢了
0.00雪花
;这段代码的功能是向屏幕输出数据段里面的字符,以0为结束符号
;show_str是实现这段代码的子程序
;dh为行数,dl为列数,cl为字体颜色
assume cs:code,ss:stack
data segment
db 'welcome to masm!',0
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
start:mov dh,8
mov dl,3
mov ch,0
mov cl,02h
mov ax,stack
mov ss,ax
mov sp,10H
mov ax,data
mov ds,ax
mov ax,0b800H
mov es,ax
mov si,0
call show_str
mov ax,4c00h
int 21h
show_str:mov ax,0
mov al,160 ;这里我的思路是向把160和行数相乘然后得到他的偏移量一行要占160个字节
mul dh
push ax
mov ax,0
mov al,2 ;列数相乘得到偏移量,因为一列要占两个字节
mul dl
push dl
pop di
pop ax
add di,ax ;取出来相加,结果放在di里面
mov ah,cl ;把颜色代码放进ah里面
s:jcxz ok ;判断字符串是否为0
mov cl,byte ptr ds:[si]
mov al,byte ptr ds:[si] ;把第一个字符串放进al里面
mov word ptr es:[di],ax ; 把ax输入进显示区域.
inc si
add di,2
jmp short s
ok:ret
code ends
end start
编译的时候出现:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
27.ASM(32): warning A4057: Illegal size for operand
50690 + 415710 Bytes symbol space free
1 Warning Errors
0 Severe Errors
想半天想不出来..请教各位了.!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课