一个关于call指令的问题
assume cs:codesg,ds:datasg,ss:stackdatasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
stack segment
dw 8 dup(0)
stack ends
codesg segment
start:
mov ax,datasg
mov ds,ax ;设置段地址
mov ax,stack
mov ss,ax
mov sp,10h ;栈
mov ax,0b872h ;显示的段地址
sub di,di
sub si,si
mov cx,3 ;3行,循环3次
s1:
push cx ;将cx的值推进栈中
mov es,ax
mov ah,ds: ;将颜色属性放入ah中
sub bx,bx
mov cx,16 ;行循环16次
s:
mov al,ds:
mov es:,al ;将字符复制到显示的行中
mov es:,ah ;将颜色属性放入字符的后一个字节中
inc bx ;改变字符
add si,2
loop s
add di,1 ;改变颜色属性
add si,0a0h
pop cx
loop s1
mov ax,4c00h
int 21h
codesg ends
end start
这个是我自己写的一个不知道为什么只能出现第一行的“welcome to manm!”我真的不知道那出错了。谢谢各位了。
各位,不好意思,标题写错了。是一个实验九的问题{:5_111:} 你用的什么操作系统win7还是xp
你的ax在第二个循环改变了,你把第一个·循环中mov es,ax挪到所有循环之前,我改了一下,这个实现的是三个。 assume cs:codesg,ds:datasg,ss:stack
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
stack segment
dw 8 dup(0)
stack ends
codesg segment
start:
mov ax,datasg
mov ds,ax ;设置段地址
mov ax,stack
mov ss,ax
mov sp,10h ;栈
mov ax,0b872h ;显示的段地址
sub di,di
sub si,si
mov es,ax
mov cx,3 ;3行,循环3次
s1:
push cx ;将cx的值推进栈中
mov ah,ds: ;将颜色属性放入ah中
sub bx,bx
mov cx,16 ;行循环16次
s:
mov al,ds:
mov es:,al ;将字符复制到显示的行中
mov es:,ah ;将颜色属性放入字符的后一个字节中
inc bx ;改变字符
add si,2
loop s
add di,1 ;改变颜色属性
add si,0a0h
pop cx
loop s1
mov ax,4c00h
int 21h
codesg ends
end start 喜爱健康 发表于 2012-8-30 21:18 static/image/common/back.gif
assume cs:codesg,ds:datasg,ss:stack
datasg segment
db 'welcome to masm!'
恩恩,谢谢了,我刚试试了一下,真的可以了。呵呵,虽然还有点小问题,不过改改就好了{:5_109:}
页:
[1]