首页
社区
课程
招聘
[旧帖] 新人问:在屏幕输出三行字的错误原因! 0.00雪花
发表于: 2014-5-25 15:48 2820

[旧帖] 新人问:在屏幕输出三行字的错误原因! 0.00雪花

2014-5-25 15:48
2820
王爽的教程实验九:在屏幕输出三行字:Welcome to masm!,分别是绿色,红底绿色,白底蓝色。
我的代码:
assume cs:codesg,ds:datasg

datasg segment
	db 'Welcome to masm!'
datasg ends

codesg segment
	start:
	mov bx,10
	mov ax,datasg
	mov ds,ax
	mov ax,0b800h
	mov es,ax
	mov di,10*160+80
	mov si,0
	mov cx,10h
	
  s:mov al,ds:[si]
  	mov ah,10000010b
  	mov es:[di],ax
  	inc si
  	inc di
  	inc di
  	loop s
  	
  	mov cx,10h
  	mov si,0
 s1:mov al,ds:[si]
 	mov ah,10100100b
 	mov es:[di],ax
 	inc si
 	inc di
 	inc di
 	loop s1
 	
 	mov cx,10h
 	mov si,0
 s2:mov al,ds:[si]
 	mov ah,11111001b
 	mov es:[di],ax
 	inc si
 	inc di
 	inc di
 	loop s2		
	
	mov ax,4c00h
	int 21h
	
codesg ends 
end start

输出结果:Welcome to masm!Welcome to masm!Welcome to masm!三句是连续的,并没有换行,
而老师的代码是换行的,老师又没有解释为什么。
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,10*160+80
	mov cx,16
	
s1: mov al,ds:[si]
	mov ah,00000010b
	mov es:[di],ax
	inc si
	inc di
	inc di
	loop s1
	
	mov si,0
	mov di,11*160+80
	mov cx,16
s2: mov al,ds:[si]
	mov ah,00100100b
	mov es:[di],ax
	inc si
	inc di
	loop s2
	
	mov si,0
	mov di,12*160+80
	mov cx,16
s3: mov al,ds:[si]
	mov ah,01110001b
	mov es:[di],ax
	inc si
	inc di
	inc di
	loop s3

	mov ax,4c00h
	int 21h
code ends
end start


[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
注意看 DI 寄存器,分别加了1行,S1中是10,S2中是11,S3中是12
2014-5-25 22:41
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,我再看一遍
2014-5-26 12:33
0
游客
登录 | 注册 方可回帖
返回
//