zoukankan      html  css  js  c++  java
  • 《汇编程序》王爽课程设计一

    最近学习《汇编程序》王爽的汇编程序,经过一番努力终于实现了第一个课程设计,立文为证,随便代码写的比较烂,不过总算是实现了功能。

    一、实验要求

    在屏幕输出实验七中的数据

    二、设计思路

    1、将实验七的程序编写成一个子过程finishing,在主程序中调用,可以获得实验七种指定格式的table段数据,设置es:bx指向table段中第一行

    2、创建一个数据缓存区buffer,设置ds:si指向buffer

    3、对于字符串,从table中读取后写入buffer,末尾写入0;对于数值,直接调用实验10中写好的dtoc转换到buffer中

    4、每次更新buffer中数据后调用实验10中的show_str来显示字符串

    要求的效果是

    image

    image


    代码:

    assume cs:code
    data segment
        dd 1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995 
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
        dd 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
        dd 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239,260,304,333
        db 16 dup(0)
    data ends
    stack segment
        db 64 dup(0)
    stack ends
    code segment
        start:
            mov ax,data
            mov ds,ax
            mov ax,stack
            mov ss,ax
            mov sp,64
            mov ax,0B800H
            mov es,ax
            mov di,336
            mov si,0
            mov bh,2
            mov bl,2
            mov cx,4
          
          m:
            push cx
            mov cx,21
          s:
            mov dx,ds:[si+2]
            mov ax,ds:[si]
            call d2c
            mov dh,bh
            mov dl,bl
            call show_str
            inc bh
            add si,4
            loop s
           
            mov bh,2
            add bl,10
            pop cx
            loop m
           
           
           
            mov ax,4c00h
            int 21h
      ;子程序描述
      ;名称: d2c
      ;功能: 将数字转换成字符串形式,放入[DI]为起始的内存单元中
      ;参数: (dx)=dword型数据的高16位 (ax)=dword型数据的低16位
      ;返回: 以0结尾的字符串,放在[DI]为起始地址的内存单元中
      d2c:
        push di
        push cx
        push dx
        push bx
        mov bx,1
        d2c_s:
        call divdw
        add cx,30h  ;得到的余数转化为字符串
        push cx
        mov cx,ax
        jcxz ok
       
        inc bx
        jmp d2c_s

       ok:
        mov cx,bx
      
       reverse: ;以正确的顺序放入字符串
        pop ax
       
        mov [di],al
        inc di
       
        loop reverse
        mov al,0
        mov [di],al
        inc di
        pop bx
        pop dx
        pop cx
        pop di
       
        ret
       
     
      ;子程序描述
      ;名称: divdw
      ;功能: 进行不会产生溢出的除法运算,被除数为dword型,除数为word型,结果为dword型.
      ;参数: (dx)=dword型数据的高16位 (ax)=dword型数据的低16位 (cx)=除数
      ;返回: (dx)=结果的高16位 (ax)=结果的低16位        (cx)=余数
      ;应用举例: 计算1000000/10(F4240H/0AH) 
      divdw:
        push ax ;被除数的低16位入栈
        mov ax,dx
        mov dx,0
        mov cx,10
        div cx  ;得到的结果商放在AX中,余数放在DX中
        mov cx,ax;暂时保存商
        pop ax  ;取出低16位的值
        push cx ;保存商入栈
       
        mov cx,10
        div cx
       
        mov cx,dx   ;余数放入cx中
        pop dx  ;商的高16位存入dx中,ax中的结果就为商的低16位
       
        ret
       
       
      show_str:;子程序,bx中存放字符串的首地址,si中存放字符缓冲区的首地址
            ;寄存器入栈
            push dx
            push cx
            push bx
            push si
            mov ax,160
            mov cl,dh
            mul cl
            mov bx,ax
            mov ah,0
            mov al,dl
            mov cl,2
            mul cl
            add ax,bx
            mov si,ax
            mov bx,0
        str:;显示字符串
            mov cl,[di+bx];判断是否读到0
            mov ch,0
            jcxz str_ok
            mov es:[si],cl;移动字符串
            mov es:[si+1],02h
            add si,2
            inc bx
            jmp str
         str_ok:;寄存器出栈
            pop si
            pop bx
            pop cx
            pop dx
            ret
            ;返回
       
       
       
       
       
       
    code ends
    end start

  • 相关阅读:
    asp.net Forms验证跨域页面不能访问的问题
    JavaScript创建命名空间
    DataTable转换成JSON字符串的函数
    javascript 正确截取单字节和双字节混和字符串的方法
    异常详细信息: 不能通过已删除的行访问该行的信息
    HttpUtility.ParseQueryString直接从字符串URL中提取参数
    支持函数,变量的算术表达式计算(三、加入函数)
    mp3 分类管理工具
    我好累
    电饭煲是如何知道饭已熟了的
  • 原文地址:https://www.cnblogs.com/cxjchen/p/2969485.html
Copyright © 2011-2022 走看看