鱼C论坛

 找回密码
 立即注册
查看: 2480|回复: 0

实验10(3)自认为是最完美答案

[复制链接]
发表于 2017-6-20 16:15:04 | 显示全部楼层 |阅读模式

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

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

x
因为我觉得题意是说把data段中的数据都显示出来
assume cs:code,ds:data,ss:stack
data segment
dw 123,12666,1,8,3,38
dw 10 dup(0)
data ends
stack segment
dw 16 dup(0)
stack ends
code segment
               
start:          mov ax,data
                        mov ds,ax
                        mov ax,stack
                        mov ss,ax
                        mov sp,10h
                       
                        mov si,0
                        mov bp,0
                        mov cx,6
        s:                mov ax,ds:[si]
                        call dtoc
                        add si,2
                        loop s
               
                        mov dh,8
                        mov dl,3
                        mov cl,2
               
                        call show_str
               
                        mov ax,4c00h
                        int 21h
                       
        dtoc:        push dx
                        push cx
                        push ax
                        push si
                        push bx
                       
                        mov bx,0                ;计算一共添加了多少个字节
                       
                s1:        mov cx,10d
                        mov dx,0
                        div cx
                        mov cx,ax                ;把商ax赋值给cx,判断是否为0
                        jcxz s2
                       
                        add dx,30h
                        push dx
                        inc bx
                        jmp short s1
                s2:        add dx,30h                        ;因为商ax等于0,有余数dx没添加
                        push dx
                        inc bx
                        mov cx,bx                        ;确定本次循环次数
                        mov si,0
                       
                s3:        pop ax
                        mov ds:[bp+si+10h],al        ;把转换过的数据添加到ds中
                        inc si
                        loop s3
                                                       
                        add bp,bx                                ;bp保存一共用掉的字节

        okay:        pop bx
                        pop si
                        pop ax       
                        pop cx
                        pop dx
                        ret
show_str:        push si
                        push cx                        ;保存颜色数据备用
                        mov al,0ah                ;160就是A0h,因为是偏移地址,所以取十位为0Ah
                        dec dh
                        mul dh                        ;8位乘法 al * dh = ax
                        add ax,0b800h        ;算出段地址
                        mov es,ax               
                       
                        mov al,2
                        dec dl
                        mul dl                        ;8位乘法 al * dl = ax
                        mov di,ax                ;算出偏移地址,赋值给显示初始位置di
                        mov si,0
                s0:        mov cl,byte ptr [si+10h]  ;根据你自己设计的储存地址改变
                        mov ch,0               
                        jcxz ok                        ;判断内存中是否遇到0
                       
                        mov al,ds:[si+10h]                ;根据你自己设计的储存地址改变
                        mov es:[di],al                ;将data段中的数据copy到显存es中
                       
                        pop ax                                ;取出保存的颜色值
                        mov es:[di+1],al        ;将颜色值数据copy到显存es中
                        push ax                                ;再次保存颜色值,备用
                        inc si                               
                        add di,2                       
                        jmp short s0
                ok: pop cx
                        pop si
                        ret                                        ;退出
                       
                       
code ends

end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-25 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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