汇编网首页登录博客注册
regex的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2010-01-30 00:36] 作业:【实验】10.3

图片载入中
终于把实验三做出来啦, 虽然代码垃圾了点。。。
==================================================
root@yeah /cygdrive/d/asm
$ more disp.asm
assume  cs:code
data    segment
        dw      1357,246,110,893,23,2
data    ends
;定义一个附加数据段,用于存放转换后的ascii
data1   segment
        dw      32 dup (0)           
data1   ends

code    segment
start:  mov ax,data
        mov ds,ax
        mov si,0
        mov di,0
        mov bp,20h          ;目标起始地址

main:   mov ax,[si]         ;如遇到零则转换结束
        mov cx,ax           ;
        jcxz show           ;执行show代码段
        call d2c            ;如数据非零则转换
        mov bx,si           ;保存一下si的值
        mov si,0            ;转换结束执行数据复制
        jmp short revcp     ;即执行revcp处代码

next:   mov si,bx           ;取出si的值
        add si,2            ;处理下一数据
        mov di,0            ;
        jmp short main      ;继续主循环。

d2c:    mov bx,0ah          ;开始digital到char的
        sub dx,dx           ;转换
        div bx              ;
        add dx,30h          ;将转换后的数字变成ASCII
        mov [di+10h],dx     ;然后存放至暂存地址DS:10处
        mov cx,ax           ;如商为零则执行d2c下面指令
        jcxz re
        inc di
        jmp short d2c
re:     ret

revcp:  mov al,[di+10h]     ;开始复制数据
        mov ds:[bp+si],al   ;
        mov cl,al           ;
        mov ch,0            ;
        jcxz ok
        dec di
        inc si
        jmp short revcp

ok:     mov al,20h          ;复制后的数据加空格
        mov ds:[bp+si],al   ;
        add bp,si           ;保存目标地址
        inc bp
        jmp short next      ;处理下一个数字串

show:   mov bx,0b800h       ;开始显示字符串
        mov es,bx
        mov si,0
        mov dh,8            ;定义行列值及属性
        mov dl,3            ;
        mov cl,2            ;

        mov ax,0a0h         ;初始化行
        mul dh
        mov bp,ax

        mov ah,cl          

disp:   mov bl,dl
        mov bh,0
        mov di,bx           ;初始化列

        mov cl,[si+20h]     ;开始逐字节显示
        mov ch,0
        jcxz over           ;

        mov al,[si+20h]
        mov es:1[bp+di],ax

        inc si
        add dl,2

        jmp short disp
over:   mov ah,4ch
        int 21h
code    ends
end     start
==================================================
评论次数(2)  |  浏览次数(899)  |  类型(默认类型) |  收藏此文  | 

[  regex   发表于  2010-01-30 12:32  ]

三个实验踉踉跄跄磕磕绊绊的搞出来啦, 虽然不太精彩, 可是毕竟是自己的心血。
通过这个三个实验, 最大的收获是对debug使用, 还有程序中细节的考虑, 遗憾的就是对栈的操作有些怵头+_+, 
开始做课题设计那个啦,再把头10章仔细看一遍。。。

[  游客   发表于  2010-02-02 13:28  ]

revcp:逆序复制的意思
因为执行完d2c之后, 数字都是倒序排列的, 所以得rev一下

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码