青草 发表于 2013-2-27 14:16:39

自己的学习成果 还有1个多月就该就可以结果学习了

;2013-02-27 10:01 王爽 汇编语言 实验10.3 显示数字问题
;公式如下:
assume cs:code,ss:szeeg

data segment
dw 123,12666,1,8,3,38
data ends

szeeg segment
dw 16 dup (?)
szeeg ends

code segment
start:mov ax,data          ;设置数据段
      mov ds,ax
        mov ax,szeeg         ;设置栈段
      mov ss,ax
      mov sp,20h
        mov ax,0B800h      ;设置显存段
        mov es,ax
      
        mov si,0
      mov di,6*160+80      ;在显示屏上第6行第40开处显示数据
        mov bp,0

        mov cx,6
      a:call dtop            ;调用子程序
        inc si
        inc si               ;定位数据段内的数"字"据
        loop a               ;循环遍历数据段数据

      mov ax,4c00h
      int 21h

;以下是子程序代码实现数据字符显示功能
   dtop:push cx
        mov ax,0             ;清除ax寄存器内的数据
      mov ax,ds:       ;取出数据段内的数据作被除数
        mov bx,10             ;除数
   
      s:div bx               ;进行除法运算
        mov cx,dx
        jcxz c
        add dl,48
        mov dh,02h         ;设置绿色字体
        push dx            ;将转换后的数据入栈
        inc bp               ;记录转换次数用于逆序循环用
        mov ax,ax
        mov bx,bx
        mov dx,0
        jmp short s

      c:mov cx,bp             ;设置循环次数
      n:pop ax                ;数据出栈进行还原数据
        mov es:,ax      ;逆序转换数据
        add di,2            ;定位显存段偏移
        loop n

   ok:mov dl,2ch            ;设置间隔符","逗号
        mov dh,03h            ;设置浅蓝色字体
        mov es:,dx      ;输出显示排过序的数据
        add di,2
        mov dx,0
        mov bp,0            ;清除上一次的循环记录次数
        pop cx
        ret
;数据字符显示子程序 结束
code ends
end start
;以上代码有面具独立实现,请学习中的朋友只要但见不要抄袭

轻松水上飞 发表于 2013-2-27 17:08:45

:lol不错,很努力的样子,坚持。
页: [1]
查看完整版本: 自己的学习成果 还有1个多月就该就可以结果学习了