实验九 编译不通过
本帖最后由 wei522688662 于 2012-6-5 20:27 编辑assume ds:data,cs:code,ss:sta
data segment
db 'welcome to masm!' ;用si定位
db 2,36,113,122 ;用di定位 这里我想打印4行 增加一行白底绿色高亮
data ends
sta segment
dw 0,0
sta ends
code segment
start: mov ax,0b800h
mov es,ax
mov sp,4h
mov bx,0h ;定位行
mov si,0h
mov di,10h
mov dx,0h
mov cx,4h ;4行文字
push cx
lie: mov cx,10h ;16列字符
hang: mov al,ds:
mov es:,al
mov ah,ds:
mov es:,ah
add dl,2h
inc si
loop hang
pop cx
mov bx,0a0h
inc di
loop lie
mov ax,4c00h
int 21h
code ends
end start 这是我的代码
assume cs:code,ds:data,ss:stackdata segment
db 'welcome to masm!'
db 02h,24h,71h
data endsstack segment
dw 8 dup(8)
stack endscode segmentstart: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,10h
mov ax,0b872h
mov cx,3
s1:
push ax
push cx
mov es,ax
mov si,0
mov di,0
mov cx,10h
s2:
mov al,ds:
mov es:,al
mov ah,ds:
mov es:,ah
inc si
add di,2
loop s2
inc bx
pop cx
pop ax
add ax,0ah
loop s1
mov ax,4c00h
int 21h
code ends
end start
离骚 发表于 2012-6-5 21:18 static/image/common/back.gif
这是我的代码
你的代码 我能看懂,现在我想用我的思路编程,帮个忙,看一下到底哪里有错误啊,先谢谢了{:5_96:} mov es:,al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来 你的那个程序好像也不是很对吧···
si··列··都得入栈··你栈空间不够··
还有你那个mov bx,oaoh·不是很懂···
我也是新手能看出来的就这么多了····
呵呵····· 静雨纷纷 发表于 2012-6-6 11:37 static/image/common/back.gif
mov es:,al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来 你的那个程序好像也不是很 ...
十分感谢你,mov bx,0a0h是每次增加以达到换行的目的{:5_93:} wei522688662 发表于 2012-6-6 15:42 static/image/common/back.gif
十分感谢你,mov bx,0a0h是每次增加以达到换行的目的
弱弱的说一下 ··不应该是add bx,0a0h 静雨纷纷 发表于 2012-6-6 23:33 static/image/common/back.gif
弱弱的说一下 ··不应该是add bx,0a0h
你是对的 ⊙﹏⊙b汗是我粗心 打错了 但是本意是add的 :L唉...求人不如求己 最后还是自己解决了
assume ds:data,cs:code,ss:stack
data segment
db 'welcome to masm!' ;用si定位
db 2,36,113,122 ;用di定位
data ends
stack segment stack
dw 0,0,0,0,0,0,0,0
stack ends
code segment
;==================初始化==========================================
start: mov ax,0b800h
mov es,ax
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov ax,0h
mov si,0h ;为数据区字符索引
mov di,10h ;为数据区属性索引
mov bx,0c0h ;显存行索引+列索引
mov cx,4h ;
;==================初始化结束=======================================
;==================循环4行==========================================
lie: push cx
mov cx,10h ;每一行16个字符
mov si,0h ;每一次打印完成一行之后,索引回到行首
hang: mov al,ds: ;取字符
mov es:,al ;字符装入显存
mov ah,ds: ;取属性
mov es:,ah ;属性装入显存
inc si
add bx,2
loop hang
pop cx
inc di
add bx,0a0h ;bx为行索引,此行代码为换行
sub bx,20h ;换行后回到行首列(相对来说,不是绝对行首)
loop lie
;==================循环4行结束=======================================
mov ax,4c00h
int 21h
code ends
end start
页:
[1]