|

楼主 |
发表于 2014-3-8 12:06:08
|
显示全部楼层
assume cs:code,ds:data
data segment
db 36h,36h,36h,32h,31h,30h,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 123,12666,1,8,3,38
dw 6 dup(0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
show_str:push ax
push bx
push cx
push dx
push es
push bp
push si
push ds
mov bl,cl
s3:jcxz ok2
mov ax,0b800h
mov es,ax
mov al,160
mul dh ;ax为1280
mov bp,ax ;bp=ax,为1280
mov al,2
mul dl ;dl乘以2,ax为它们的值
add bp,ax
mov ch,0
mov cl,byte ptr ds:[si]
mov byte ptr es:[bp],cl ;把数据段的第一字符复制到目标地址
mov byte ptr es:[bp+1],bl ;把字符颜色改了绿色
inc si ;si自增1
inc dl ;dl自增1
jmp s3
ok2:pop ds
pop si
pop bp
pop es
pop dx
pop cx
pop bx
pop ax
ret
code ends
end start
显示程序show_str没问题,结果:666210
调试计算程序dtoc,结果在数据段ds:[si],si=0,inc si。36 36 36 32 31 30 .......
求解。。。。。 |
|