|
主题 : : 【实验9】 顺利分完成,附代码。 顺带一个讨论 [待解决] |
回复[ 7次 ]
点击[ 475次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2012-08-20 18:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-18 19:10 |
assume cs:code
data segment
db'welcome to masm!'
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
begin: mov ax,data
mov ds,ax
mov ax,0b872h
mov es,ax
mov si,0
mov di,0
mov cx,16
s1: mov al,[si]
mov es:[di],al
mov al,00000010b
mov es:[di+1],al
inc si
add di,2
loop s1
mov cx,16
mov ax,es
add ax,0ah
mov es,ax
mov si,0
mov di,0
s2: mov al,[si]
mov es:[di],al
mov al,00100100b
mov es:[di+1],al
inc si
add di,2
loop s2
mov ax,es
add ax,0ah
mov es,ax
mov si,0
mov di,0
mov cx,16
s3: mov al,[si]
mov es:[di],al
mov al,01110001b
mov es:[di+1],al
inc si
add di,2
loop s3
mov ax,4c00h
int 21h
code ends
end begin
大家看我给ES初始化段基址的时候是:
mov ax,0b872h
mov es,ax
结果全部正常,字符显示在屏幕中间
如果改成:
mov ax,0b800h
mov es,ax
也就是正常初始化,第一个字符显示在屏幕左上角的第一个位置
运行结果是什么都没有。。。。。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2012-08-21 06:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
你是用debug加载运行的吧。。。它会被滚屏。刷新掉。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2012-08-21 09:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-18 19:10 |
你是用debug加载运行的吧。。。它会被滚屏。刷新掉。
------------------
回复:我有考虑过,但是直接运行一闪就没了,更悲催 | | |
|
|
|
|
[第3楼]
[ 回复时间:2012-08-22 08:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36 |
程序返回前这样就行
mov ah,7
int 21h
mov ax,4c00h
int 21h | | |
|
|
|
|
[第4楼]
[ 回复时间:2012-08-22 11:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2012-08-18 19:10 |
回复:[第3楼]
------------------
哦,传说中的输入中断吗? 谢谢拉 | | |
|
|
|
|
[第5楼]
[ 回复时间:2013-02-09 23:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2013-02-06 16:20 |
|
|
|
|
|
[第6楼]
[ 回复时间:2013-05-17 07:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06 |
assume cs:code
data segment
db 'w e l c o m e t o m a s m ! '
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800H
mov es,ax
mov cx,16
mov bx,0
s: mov al,[bx]
mov es:[bx+64].8c0H,al
mov es:[bx+64].960H,al
mov es:[bx+64].0A00H,al
mov ah,00000010B ;或2h 写成2进制比较直观
mov es:[bx+65].8c0H,ah ;闪烁\背景R\G\B\高亮\前景R\G\B 1为开启 2为关闭
mov ah,01000010b ; 11111111B 则为闪烁高亮白字白背景
mov es:[bx+65].960H,ah
mov ah,01110001b
mov es:[bx+65].0A00H,ah
inc bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第7楼]
[ 回复时间:2013-05-19 11:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-07-18 20:29 |
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov bx,0h ;设置偏移地址
mov si,40h ;用si作为行内偏移地址,使字符水平居中
mov ax,0b882h ;设置字符所在行,基本垂直居中
mov ds,ax ;ds指向显存
mov ax,data
mov es,ax ;es指向数据
mov cx,10h
s:mov al,es:[bx] ;循环输入字符数据,此时不设置显示属性
mov [bx][si],al
inc bx
inc si
loop s
mov si,40h ;恢复行内偏移量
mov bx,1h ;设置显示属性起始地址偏移量
mov cx,7h
s0:mov byte ptr [bx][si],02h ;设置第一段字符显示属性
add bx,2h
loop s0
add bx,2h ;设置偏移量
mov cx,2h
s1:mov byte ptr [bx][si],24h ;设置第二段字符显示属性
add bx,2h
loop s1
add bx,2h ;设置偏移量
mov cx,5h
s2:mov byte ptr [bx][si],71h ;设置第三段字符显示属性
add bx,2h
loop s2
mov ax,4c00h
int 21h
code ends
end start | | |
|