|
主题 : : 【实验9】出现的很奇怪的问题,大家帮忙看一下,很简单的代码 [待解决] |
回复[ 3次 ]
点击[ 214次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-05-09 18:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-01 09:12 |
问题,就是结果字符串中welcome to masm!的w没有显示出来,很奇怪
代码如下:
assume cs:codesg,ds:data,es:table,ss:stack
data segment ;段地址为0B800h,偏移地址7c0h
db 'welcome to masm!' ;16个字节
data ends
table segment
dd 0
table ends
stack segment
dd 0
stack ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov bx,0h
mov si,0h
mov cx,16
s: mov ax,0b800h
mov es,ax
mov al,[bx]
mov byte ptr es:[7c0h+si],al
mov byte ptr es:[860h+si],al
mov byte ptr es:[900h+si],al ;先移动字符串
mov al,2h
mov byte ptr es:[7c1h+si],al ;从这里开始设置字符串的颜色属性
mov al,24h
mov byte ptr es:[861h+si],al
mov al,71h
mov byte ptr es:[901h+si],al
add si,2h
add bx,1h
loop s
mov ax,4c00h
int 21h
codesg ends
end start
结果出来是:
AX=B871 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=153B ES=B800 SS=153D CS=153E IP=0039 NV UP EI PL NZ NA PO NC
153E:0039 26 ES:
153E:003A 88840109 MOV [SI+0901],AL ES:0901=07
-t
AX=B871 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=153B ES=B800 SS=153D CS=153E IP=003E NV UP EI PL NZ NA PO NC
153E:003E 83C602 ADD Selcome to masm!
-t elcome to masm!
elcome to masm!
AX=B871 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0002 DI=0000
DS=153B ES=B800 SS=153D CS=153E IP=0041 NV UP EI PL NZ NA PO NC
153E:0041 83C301 ADD BX,+01
-t
AX=B871 BX=0001 CX=0010 DX=0000 SP=0000 BP=0000 SI=0002 DI=0000
DS=153B ES=B800 SS=153D CS=153E IP=0044 NV UP EI PL NZ NA PO NC
153E:0044 E2CD LOOP 0013
-p
AX=B871 BX=0010 CX=0000 DX=0000 SP=0000 BP=0000 SI=0020 DI=0000
DS=153B ES=B800 SS=153D CS=153E IP=0046 NV UP EI PL NZ AC PO NC
153E:0046 B8004C MOV AX,4C00
- | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-05-09 19:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:4
注册日期:2009-07-29 23:59 |
你的程序没问题,若要在屏幕上显示字符串“welcome to masm!”不能使用BEDUG执行,直接输入你的文件名***.ese回车即可! | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-05-09 19:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:4
注册日期:2009-07-29 23:59 |
不好意思,更改一下:是直接输入你的文件名***.exe回车即可! | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-05-09 20:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-01 09:12 |
非常感谢,已经将程序修改成29行的代码了,很有成就感。代码如下:
assume cs:codesg,ds:data
data segment ;段地址为0B800h,偏移地址7c0h
db 'welcome to masm!' ;16个字节
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov bx,0h
mov si,0h
mov ax,0b800h
mov es,ax ;直接将段地址0b800h放进es
mov cx,16
s: mov al,[bx]
mov es:[7c0h+si],al ;显示第一行字符串
mov es:[860h+si],al ;显示第二行字符串
mov es:[900h+si],al ;显示第三行字符串
mov al,2h ;绿色
mov es:[7c1h+si],al ;设置第一行字符串颜色
mov al,24h ;绿底红色
mov es:[861h+si],al ;设置第二行字符串颜色
mov al,71h ;白底蓝色
mov es:[901h+si],al ;设置第三行字符串颜色
add si,2h
add bx,1h
loop s
mov ax,4c00h
int 21h
codesg ends
end start | | |
|