鱼C论坛

 找回密码
 立即注册
查看: 2474|回复: 1

[技术交流] 花了我这么长时间终于搞定了,实验10第三个,贴出来晒晒,不能白写了

[复制链接]
发表于 2012-1-11 22:28:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 415968430 于 2012-1-11 22:32 编辑

亲测mov ax,12666显示绿色的12666
assume cs:code

data segment
db 10 dup (0)
data ends

stack segment
db 20h dup (0)
stack ends

code segment
start:
mov ax,12666
mov dx,0
mov bx,data
mov ds,bx
mov bx,stack
mov ss,bx
mov sp,20h
mov si,0
s1:mov cx,10
call dtoc;计算ax中每一位的数
jcxz s3
add cx,30h
mov ds:[si],cl
inc si
jmp s1
s3:call arund;将ds中的数掉头.si为要掉头的byte个数减1





s0:mov dh,8
mov dl,3
mov cl,2
call show_str;显示ds中的数

mov ax,4c00h
int 21h


arund:
mov bx,0
mov dh,0
e:mov cx,si
mov dl,ds:[bx]
push dx
inc bx
sub cx,bx
jcxz e0
jmp e
e0:mov cx,si
mov bx,0
e1:pop ax
mov ds:[bx],al
inc bx
loop e1
ret



dtoc:
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax;商放进bx中保存,余数在dx中正好为低16做除法时代高位
pop ax
div cx
mov cx,dx
mov dx,bx
ret

show_str:
dec dh
mov al,160
mul dh
mov bx,ax
dec dl
mov al,2
mul dl
add bx,ax
mov ax,0b800h
mov es,ax;段地址
mov di,bx;做偏移
mov bx,0
mov ah,cl
mov ch,0
s:mov cl,ds:[bx]
jcxz ok
mov es:[di],cl
mov es:[di+1],ah
inc bx
inc di
inc di
jmp s
ok:ret

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-1-11 22:31:13 | 显示全部楼层
其中那个arund是把ds掉头用的
源代码多了个dec si:
assume cs:code

data segment
db '1','2','3','4','5','6'
db 10 dup (0)
data ends

stack segment
db 30h dup (0)
stack ends

code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,30h
mov si,6 ;6个数,si为形参
dec si
mov bx,0
mov dh,0
e:mov cx,si
mov dl,ds:[bx]
push dx
inc bx
sub cx,bx
jcxz e0

jmp e
e0:mov cx,si
mov bx,0
e1:pop ax
mov ds:[bx],al
inc bx
loop e1


mov ax,4c00h
int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 16:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表