汇编课程设计1

复习笔记——计算机组成原理 2014年12月考研前一周写的笔记。。。 放在这里,希望对其他人有帮助。。。 阅读详情
assume cs:code
data segment
    db'1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db'1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db'1993','1994','1995'
    ;以上是表示21年的21个字符串,最大位置在54h
    
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;以上是表示21年公司总收入的21个数据,最大位置在a8h
    
    dw 3,7,9,13,28,38,130,220,479,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ;以上是表示21年公司雇员人数的21个数据,最大的位置在d2h,地址结束位置为e0h
data ends

shows segment
    db 32 dup(0)
shows ends

table segment
    db 21 dup ('year summ ne ?? ')
table ends

code segment
start:        mov ax,data    
            mov ds,ax
            mov ax,table
            mov es,ax
            
            mov si,0
            mov di,0
            mov cx,21
            call year_copy
            call get_copy
            call mana_copy
            call aver_copy
            call show    
            mov ax,4c00h
            int 21h
            
            
            
year_copy:    mov bx,0                            ;控制复制后的每行第一个字符位置
            call time
            call copy4db
            ret

get_copy:    mov bx,5
            call time
            call copy4db
            ret

mana_copy:    mov bx,10
            call time
            call copy2db
            ret
            
aver_copy:    mov bx,5
            call time
            call avers
            ret
            
show:        mov ax,table
            mov ds,ax
            mov ax,0b800h
            mov es,ax
            mov si,0                            ;目标数据的地址
            mov di,0                            ;目的数据的地址
            mov dx,7                            ;字的属性
            call show_year
            call show_get
            call show_mana
            call show_aver
            ret


copy4db:    mov di,0                            ;四字节的复制
            mov ax,[si]
            mov es:[bx+di],ax
            add si,2
            add di,2
            mov ax,[si]
            mov es:[bx+di],ax
            add si,2
            add bx,16
            loop copy4db
            ret
            
copy2db:    mov di,0                            ;双字节的复制
            mov ax,[si]
            mov es:[bx+di],ax
            add si,2
            add bx,16
            loop copy2db
            ret    
    
avers:        push cx
            
            mov ax,es:[bx+2]    
            mov si,es:[bx+5]
            mov dx,0
            div si
            mov cx,ax
            mov ax,es:[bx]
            div si
            add ax,cx
            mov dx,0
            mov es:[bx+8],ax
            add bx,16
            pop cx
            
            loop avers
            ret



show_year:    call time                            ;显示年份
year_s0:    push cx
            mov cx,4
year_s:        mov al,[si]                            ;一个字符复制
            mov es:[di],al
            inc di
            mov es:[di],dl
            inc si
            inc di
            loop year_s
            add si,12
            add di,98h
            pop cx
            loop year_s0
            jmp ok
            
            
            
            
show_get:    mov bx,5                            ;显示总收入,bx为table段中需要处理的数据的位置
            mov si,2                            ;si寄存器中存放需要处理的数据中最高位的偏移地址
            mov di,12                            ;di寄存器赋值用于后续转换时的除数但在这里我们对其表示为后期需要显示的列数位置
                                
            call time
            call take
            ret
            
            
            
show_mana:    mov bx,10
            mov si,0
            mov di,22
            call time
            call take
            ret
            

show_aver:    mov bx,13
            mov si,0
            mov di,32
            call time
            call take
            ret
            




            
            
take:        push cx
            mov dx,0
            mov bp,0                            ;bp寄存器是栈寄存器但是现在我将其用于计数
            push di
            push bx
            call hchanged
            pop bx
            pop di
            add bx,16
            add di,50h
            pop cx
            loop take
            jmp ok
            
            
            
hchanged:    mov cx,si                            ;利用si是否为0判断是否有高位数据需要处理
            mov ax,[bx+si]
            jcxz hchangedl
            sub si,2
            mov cx,[bx+si]
            add si,2
            jmp hchangedh
            
hchangedh:    
            push di                                
            mov di,10
            div di                                
            pop di
            
            push ax
            mov ax,cx
            
            push di    
            mov di,10
            div di
            pop di
            
            mov cx,dx
            pop dx
            push cx                                ;余数入栈
            mov cx,ax
            mov ax,dx
            mov dx,0
            inc bp
            jcxz  popshow
            
            jmp hchangedh

change:        sub si,2
            jmp hchanged





            
hchangedl:                            ;低位十六进制转换为十进制的计算
            push di
            mov di,10
            div di
            pop di
            push dx
            mov dx,0
            mov cx,ax
            inc bp
            jcxz popshow
            jmp hchangedl
            
    

    
            
            
popshow:    
            
            add di,di                            ;数据直接从栈中弹入显存,将列数转化为在显存中的偏移地址数
            
popr:        pop es:[di]
            push ax
            mov ax,30h
            add es:[di],ax
            mov al,7
            mov es:[di+1],al
            pop  ax
            add di,2
            dec bp
            mov cx,bp
            jcxz ok1 
            jmp popr
            
ok1:        mov ax,di
            mov di,2
            div di
            mov di,ax
            ret

ok0:        mov ax,di
            mov di,2
            div di
            mov di,ax
            jmp change
            
            
ok:            ret
            

time:        mov cx,21
            ret

    
code ends
end start  

 

《汇编语言》王爽(第四版) 课程设计1 本文是王爽老师《汇编语言》(第四版) 课程设计1 “将实验七中给定的公司数据显示在屏幕上”的分析及代码。这是目前写的最综合的程序。 阅读详情

相关推荐

王爽《汇编语言》课程设计1

实验结果 代码如下 assume cs:code data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db '1984','1985','1986','1987','1988','1989','1990','1991','1992' db '1993','199

5262yz的博客 1万+

8086汇编 课程设计1

**任务:**将实验7中的Power idea公司的数据按照下图所示的格式在屏幕上显示出来 在这个程序中,要用到我们前面学到的几乎所有的知识,注意选择适当的寻址方式和相关子程序的设计和应用。 另外,要注意,因为程序要显示的数据有些已经大于65535,应该编写一个新的数据到字符串转化的子程序,完成dword型数据到字符串的转化,说明如下。 在这个子程序中要注意除法溢出的问题,可以用在实验10中设计的子程序divdw来解决。 实验: 1.对于这个实验,还是可以先用C语言描述一遍 2.根据所学知识,用汇编语言

不导翁的博客 1182

《汇编语言》王爽 课程设计1

《汇编语言》王爽 课程设计1

巴尔干2015 1739

汇编_28-课程设计1

【代码】汇编_28-课程设计1。

学无止境 600

《汇编语言》课程设计1

最近在学习王爽老师的《汇编语言》,感觉十分有意思。花了一个下午做了第十章的课程设计1,对于汇编语言新手来说还是有点难的。下面把代码贴出来吧。一共200多行,感觉有些地方写麻烦了,还可以更灵活的应用循环assume cs:codesg data segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983' db...

yiaizhuan9752的博客 4292

王爽《汇编语言》第三版 课程设计1

先上代码: assume cs:codesg ;将整个data段看作是一个数组,长度一共为 ;21*4+21*4+2*21=168+42=210字节 data segment db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983' db '1984', '1985', '1986', ...

include_heqile的博客 3405

COP2000最新版

伟福的计算机组成原理实验仪既可以带硬件实验仪进行实验,也可以用集成开发环境软件来模拟模型机的运行。图标的“设置”功能就是选择用cop2000硬件实验仪,还是使用软件模拟器。若是使用硬件实验仪,还要选择与实验仪通信所用串行口。 “刷新”功能就是在程序运行过程中刷新各寄存器的值。以便在程序全速执行时观察寄存器的内容。 文件的“打开”、“保存”功能与主菜单的相应功能一样。文件的编辑功能,执行控制功能与主菜单也相同。 “生成组合逻辑abel程序”功能就是在你用微程序控制方式设计了一套指令系统,并且验证无误后,帮助你生成组合逻辑控制方式的abel程序。 “中断输入”功能,就是在软件模拟中断程序时,用此键来申请中断。

从实验七到屏幕显示:汇编语言课程设计1的实战解析

本文深度解析王爽《汇编语言》课程设计1的实战过程,将实验七的数据处理与实验十的屏幕显示技术相结合。核心在于通过重构`totable`子程序、编写支持32位数的`dtoc_dword`转换程序以及稳健的`show_str`显示程序,完成从内存数据到屏幕表格的完整转换与呈现,并分享了关键的调试技巧与常见问题解决方案。

weixin_29247219的博客 336

伟福8000软件

伟福8000

王爽-汇编语言 课程设计1 汇编源代码

 assume cs:codesgdatasg segment ;年份 db 1975,1976,1977,1978,1979,1980,1981,1982,1983 db 1984,1985,1986,1987,1988,1989,1990,1991,1992 db 1993,1994,1995 ;总收入

落叶树的BLOG 4751

汇编语言课程设计1

在辅导学长的带领下,三个一工程的第一大阶段已经结束,对于这段时间所学的汇编知识做一个总结,我将几个难点实验和综合研究写成博客既是总结,也方便学习汇编语言的你们拿去参考。 课程设计一: 1.分析: 1)在实验七中,已经实现了将这些数据写入到了table段内存中;现在我们要的就是将table段内存读取出来后,有的数据不是字符串,需要将数字转换成字符串形式;写入显存。直接将实验七的程序改造成一个子程序,在主程序中直接调用。 2)table段数据的读取并写入一个临时的内存存储段—data段:对于字符串(例如:年份)

bannerkiller的博客 3833

王爽著《汇编语言》课程设计1(Page211)源码答案

;说明:王爽著《汇编语言》课程设计1 Page-211 assume cs:code,ds:data,ss:stack data segment dw 16 dup(0) ; dw 1975,1976,1977,1978,1979,1980,1981,1982;年份首地址为DS:20H dw 1983,1984,1985,1986,1987,1988,1989,1990 dw 1991,1992,

8332

计算机组成原理-SUBC A,MM指令的运行分析课程设计(主页有免费报告,其含完整版指令解释和实机运行截图)

利用COP8000型计算机组成原理实验箱提供的硬件资源,编写SUBC A,M指令代码,掌握整机结构、数据通路、微程序、微指令的设计。2、按照题目编写代码、设计微指令的格式,并上机调试。:用于控制模型机的各个部件,协调它们的工作。:算术逻辑单元,用于执行算术运算和逻辑运算。1、掌握实验计算机的整机结构及数据通路。:将指令的操作码解码成对应的操作信号。:存储操作数的存储器,通过地址线访问。:存储指令的存储器,通过地址线访问。:控制各个部件的操作时序和信号传递。:用于执行算术运算和逻辑运算。:用于存储指令和数据。

m0_64429340的博客 1004

千哥读书笔记:汇编语言(王爽第四版)第10章课程设计1

关于这一部分内容,可以复习一下千哥前面写的笔记:《千哥读书笔记:汇编语言(王爽第四版)第8章实验七》。

ncppk的专栏 1392

COP8000.pdf

COP8000.pdf

组成原理课设

组成原理课设

下一篇: 一个关于安全方面的想法
毛伯星
博客等级 码龄9年 18粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值