王爽汇编第九章实验9
连续输出3行字符试了几次都做不到,所以写了输出一行字符的。但是编译失败提示什么溢出assumecs:code,ds:data
data segment
db 'welcome to masm!'
db '2h,24h,71h' \颜色的值\
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h \第一个要输出字符的地址\
mov ss,ax
mov si,720h
mov di,0
mov bx,0
mov ax,16
mov cx,ax
s:mov ss:,ds:\将字符送入对应地址\
inc di
inc bx
mov ax,16
mov ss:,ds: \将颜色值送入对应地址\
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
嗯...,你犯了一个严重的错误啊!两个内存的值是不能相互传递的,必须通过AX来进行传递,以下的代码编译没问题,你看一下:
assumecs:code,ds:data
data segment
db 'welcome to masm!'
db '2h,24h,71h' ;颜色的值
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h ;第一个要输出字符的地址
mov es,ax
mov si,720h ;ss:si是显存的位置
mov di,0
mov bx,0
mov ax,16
mov cx,ax ;这样循环16次
s:
mov ax,ds:
mov es:,ax ;将字符送入对应地址 注意这里是不能讲一个内存的值传递想另一个内存的值的,必须先把它放在ax里面
inc di
inc bx
mov bx,16
mov ax,ds:
mov es:,ax;将颜色值送入对应地址 注意这里是不能讲一个内存的值传递想另一个内存的值的,必须先把它放在ax里面
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
嗯!这样吧!这个程序没问题,你看一下吧!
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0 ;ds:bx指向data字符串
mov ax,0b800h
mov es,ax
mov si,0 ;es:si指向显存
mov cx,16
s: mov al, ;字符赋值al
mov ah,02h ;绿色
mov es:.720h,ax ;写入第12行64列
mov ah,14h ;绿底红色
mov es:.7c0h,ax ;写入第13行64列
mov ah,71h ;白底蓝色
mov es:.860h,ax ;写入第14行64列
inc bx ;指向下一字符
add si,2 ;指向下一显存单元
loop s
mov ax,4c00h
int 21h
code ends
end start
青玄 发表于 2014-4-18 18:42 static/image/common/back.gif
嗯!这样吧!这个程序没问题,你看一下吧!
assume cs:code,ds:data
可以告诉我的那个代码那里错了么 s:mov ss:,ds:
你确定这样能行? 青玄 发表于 2014-4-18 18:04 static/image/common/back.gif
嗯...,你犯了一个严重的错误啊!两个内存的值是不能相互传递的,必须通过AX来进行传递,以下的代码编译没 ...
谢谢,我只看到有寄存器要通过通用寄存器传递,都没看到内存也要,不知道是我看过忘记了,还是没仔细看视频 mov es:.720h,ax ;写入第12行64列
为什么它代表12行64列,可以解释一下嘛 艾蒙·瓦特 发表于 2014-4-21 14:59 static/image/common/back.gif
mov es:.720h,ax ;写入第12行64列
为什么它代表12行64列,可以解释一下嘛
我用的是王爽的汇编语言这本书,第九章 实验9 资料上面有显示器有25行每行有80个字符,每个字符有256种属性。也就是说一个字符要两字节储存一个字节存字符,一个字节存字符的属性。80个字符一行就是160字节,12行第64列也是就(12*80+64)*2,结果是720H是16进制,10进制是1824, 水月同洲 发表于 2014-4-22 16:08 static/image/common/back.gif
我用的是王爽的汇编语言这本书,第九章 实验9 资料上面有显示器有25行每行有80个字符,每个字符有256种属 ...
请问我赋值的王爽答案的代码,编译成功后,我用cmd运行,就闪了一下屏幕,没有出现文字是什么原因 我也遇到了楼上说的问题,一闪而过,没显示:mad: 我也出了这个问题,我还发了求助贴,但是手贱按错了不小心给力最佳答案, 水月同洲 发表于 2014-4-22 16:08 static/image/common/back.gif
我用的是王爽的汇编语言这本书,第九章 实验9 资料上面有显示器有25行每行有80个字符,每个字符有256种属 ...
12*80+64=1024 再乘以2十进制应该是2048十六进制是800H 艾蒙·瓦特 发表于 2014-4-25 22:29 static/image/common/back.gif
12*80+64=1024 再乘以2十进制应该是2048十六进制是800H
:dizzy:没注意不好意思书上的...开始地址应该是11行第32个字符是起始地址。我那个是自己另外写的 跪求解释:本实验中我将按源代码敲进去或将源代码复制过去编译运行后,cmd一闪而过,根本没有显示文字什么的!(系统为win7旗舰版)
页:
[1]