9章 实验9 问题
本帖最后由 sh11va 于 2013-3-10 11:09 编辑题目要求:编程显示绿色黑底字符串"welcome to masm!"
这是我编的代码,编译没错,运行起来什么都没出现。
assume cs:code,ds:data
data segment
db 77,02,65,02,6c,02,63,02,6f,02,6d,02,65,02,20,02,74,02,6f,02,6d,02,61,02,73,02,6d,02,21,02
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
s: mov al,
mov es:,al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
你第3行有问题啊
77,02,65,02,6c…… 一下2进制、一下16进制,你想表达什么? 本帖最后由 L]V
这个程序存在很多逻辑上的错误,
1定义data段的时候,出错了,我不明白你想定义的是什么?不是“welcome to masm!”的ascll码,还有,在定义16进制的数
据的时候,如果是字母开头,要在前面加上零,如 0f7H
2 s循环没有设置循环的次数,即cx的值
3 没有把颜色设置到指定的内存空间里
4 不是我吹毛求疵,写的代码看起来别扭,建议你多看看书本的例子,多模仿牛人的代码风格
下面奉上我修改过的程序:
assume cs:code,ds:data
data segment
db "Welcome to masm!"
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov di,0
mov cx,16
s:mov al,ds:
mov es:,al
mov al,2
mov es:,al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
PS:在编译和链接后,即masm 和obj之后,要在黑窗口输入指令cls ,这是清屏的指令,然后在执行程序,不然的话,程序显示的字符串会被刷掉
有错不要怕,开始的时候错得越多越好,要耐心修改,以后就不会错了!!不要气馁,加油!!!没耐心的人学不好编程
再给你2个我做实验九的程序答案,一共花了 5天,做完以后,很有成就
第一个:
assume cs:code,ds:data ;2013年2月8日 21:30:37
;目的:实验9,一列一列的赋值
data segment
db'welcome to masm!'
data ends
code segment
start:
mov ax,data
mov es,ax
mov ax,0b800h
mov ds,ax
mov bx,720h
mov si,0
mov di,0
mov cx,16
s0:mov ax,es:
mov .0h,ax ;赋值到第12行
mov .0a0h,ax;赋值到第13行
mov .140h,ax;赋值到第14行
mov ax,2h
mov .1h,ax ;12行颜色为绿色
mov ax,24h
mov .0a1h,ax;13行颜色为绿底红色
mov ax,71h
mov .141h,ax;14行颜色为白底蓝色
inc si
add di,2
loop s0
mov ax,4c00h
int 21h
code ends
end start
;总结:80*25,本程序中间位置(第一页)为 第12,13,14行,第64列到95列
; 行内存分别为:6e0h,780h,820h,列内存为40h-5fh,
; 这样就可以的出第一个内存单元地址:720h
第二个:
assume cs:code,ds:data,ss:stack ;2013年2月9日 21:40:26
;目的:实验9,使用外循环和内循环,压栈cx的方法
; 一行一行地赋值
data segment
db 'welcome to masm!'
db 02h,024h,071h
data ends
stack segment
db 15 dup (0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov ax,0872h ;算出屏幕第12行中间的显存的段起始位置放入ax中
mov si,0
mov di,0
mov bx,0
mov cx,0
s0: push cx
push ax
push bx
mov es,ax
s1: mov al, ;此循环实现偶地址中存放字符
mov es:,al
inc si
add di,2
loop s1
mov si,0
mov di,0
s2: mov al,16 ;此循环实现奇地址中存放字符的颜色属性
mov es:1,al
inc si
add di,2
loop s2
pop cx
pop ax
add ax,0a0h ;相加后,ax变为下一行的地址
loop s0
mov ax,4c00h
int 21h
code ends
end start
我也想知道为什么我的程序什么都显示不了...
assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 2h,24h,71h
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
mov ax,0b72h
mov bx,0
mov cx,3
s: push cx
push ax
push bx
mov si,0
mov di,0
mov es,ax
pop bx
mov cx,10h
s1: mov al,ds:
mov es:,al
inc si
inc di
mov al,ds:10h
mov es:,al
inc di
loop s1
inc bx
pop ax
add ax,0ah
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start syjsu 发表于 2013-2-28 18:14 static/image/common/back.gif
你第3行有问题啊
77,02,65,02,6c…… 一下2进制、一下16进制,你想表达什么?
想写ascii,现在懂了,错大发了。。。 L]V static/image/common/back.gif
再给你2个我做实验九的程序答案,一共花了 5天,做完以后,很有成就
第一个:
多谢大神解答,我也准备深入的重写一下。 L]V static/image/common/back.gif
这个程序存在很多逻辑上的错误,
1定义data段的时候,出错了,我不明白你想定义的是什么?不是“welcome ...
我改过之后还是不行,然后复制了你的程序,惊悚的发现我的电脑运行你的程序也没反应,我打了cls了。 sh11va 发表于 2013-3-7 11:59 static/image/common/back.gif
我改过之后还是不行,然后复制了你的程序,惊悚的发现我的电脑运行你的程序也没反应,我打了cls了。
我执行之后是这个结果啊!!有问题?
用这个实验一下,是在屏幕中间显示的,不用cls也不会刷掉。
assume cs:code,ds:data
data segment
db "Welcome to masm!"
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov di,160*12 + 30*2
mov cx,16
s:mov al,ds:
mov es:,al
mov al,2
mov es:,al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
这个是结果
L]V static/image/common/back.gif
用这个实验一下,是在屏幕中间显示的,不用cls也不会刷掉。
我也是显示不了,复制的你的代码也不行 L]V static/image/common/back.gif
用这个实验一下,是在屏幕中间显示的,不用cls也不会刷掉。
还是不行。。。
sh11va 发表于 2013-3-7 18:48 static/image/common/back.gif
还是不行。。。
亲,你win7的,下个dbox试一下!!http://bbs.fishc.com/forum.php?mod=viewthread&tid=3581&extra=page%3D1%26filter%3Dtypeid%26typeid%3D11%26typeid%3D11 你这个 根本不和要求啊~哥们 题目是 在屏幕’ 中间‘ 显示 3行~每行一个颜色~你可到好 给人家简化成1行不说~还没在中间 L]V static/image/common/back.gif
用这个实验一下,是在屏幕中间显示的,不用cls也不会刷掉。
分别用 3中颜色显示3行~你简化成1行了~~那这题就没意义了吧 本帖最后由 wxhnr 于 2013-3-8 06:26 编辑
纯新手想知道这些程序在什么系统中编写和运行?WIN7行不行?编辑和编译分别用的哪一个?多谢 小小小小鱼 发表于 2013-3-8 02:16 static/image/common/back.gif
分别用 3中颜色显示3行~你简化成1行了~~那这题就没意义了吧
我是想先运行一行成功再写三行的。
页:
[1]