. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验10第3题,这的显示成这样算完成了吗?  [已解决] 回复[ 3次 ]   点击[ 424次 ]  
huibian2009
[帖 主]   [ 发表时间:2009-08-06 10:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-07-06 17:12
assume cs:a,ds:b,ss:c
b segment
        dw 123,12666,1,8,3,38
b ends
c segment
        dw 100 dup (0)
c ends
d segment
dw 200 dup (0);定义200个字符区域,以存储要显示的字符串
d ends
a segment
start:        mov ax,b
        mov bp,0
        mov ds,ax
        mov ax,c
        mov ss,ax
        mov sp,200
        mov ax,d
        mov es,ax;存储字符串的内存地址
        mov bx,0
        mov di,0
        call divter
        call xianshi
        mov ax,4c00h
        int 21h
divter:        mov ax,[bx];改用32位除法以保证商的存储
        mov cx,ax
        jcxz t;如果检测到为0的值则结束转换过程
        mov dx,0
        mov si,10
g:        div si
        mov cx,ax
        add dx,30h
        push dx;不论结果如何每次的余数都必须存储
        mov dx,0
        add bp,1
        jcxz exit;如果商为0则跳转到下一个操作数,否则继续进行除法运算。
        jmp near ptr g
exit:        mov cx,bp
i:        pop es:[di]
        add di,2
        loop i
        mov word ptr es:[di],0
        mov bp,0;清0,以计算第二个数据压入的次数
        add bx,2;bx加2,以指向下一个操作数
        jmp near ptr divter
t:         ret        
xianshi:mov bx,0
        mov dh,8;代表行数
        mov dl,3;代表列数
        mov cl,2;绿色字符
        mov si,0
        mov di,0
        mov ax,0b800h
        mov ds,ax;显存段地址
        mov al,160
        sub dh,1
        ;将行数减1存入dh中,以备计算该行的偏移地址。
        mul dh;计算行的偏移地址,其结果在默认在AX中。
        mov bx,ax;将ax的值赋予bx,以计算列地址
        ;计算列数地址
        mov al,2;存入列数基值
        mul dl;计算列地址,结果存在ax中。
        sub ax,2
        add ax,bx;行地址和列地址相加取得最终偏移地址
        mov di,ax
        mov bl,cl;存储字符颜色
s:        mov cl,es:[si]
        mov ch,0
        jcxz p
        mov al,es:[si]
        mov ds:[di],al
        mov byte ptr ds:[di+1],bl        
        add di,2
        add si,2
        jmp short s
        p:ret        
a ends
end start
huibian2009
[第1楼]   [ 回复时间:2009-08-06 10:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-07-06 17:12
在窗口中显示为: 1231266618338这样算符合要求吗?请各位指点。
mess
[第2楼]   [ 回复时间:2009-08-07 11:52 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
这个题显示一个数字就行了,至于显示多个数字,参照课程设计一的显示就行了~
huibian2009
[第3楼]   [ 回复时间:2009-08-24 11:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-07-06 17:12
此贴由 贴主 于 [ 2009-08-24 11:54 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved