王爽 汇编语言第三版 课程设计 1
From:https://www.cnblogs.com/Since-natural-ran/p/6938133.html
汇编语言-课程设计1: https://www.cnblogs.com/tsembrace/p/3267158.html
王爽课程设计1(汇编语言编写): https://www.imooc.com/article/18785
王爽《汇编语言》课程设计1: https://blog.csdn.net/zhangyuzuishuai/article/details/52274104
预备知识:
清屏:若要显示这些数据,不希望被之前的信息所影响,所以先把屏幕清理;
assume cs:codestack segmentdw 16 dup(0)code segmentstart:mov ax,stackmov ss,axmov sp,16mov ax,0b800hmov es,axpush bp ;保留现场,虽然没什么用,但是要养成习惯push cxmov bp,0 ;行mov cx,22 ;一共有22行需要清屏s1:mov si,0push cxmov cx,80 ;每一行有80个字符s2:mov byte ptr es:[bp+si],0 ;空字符mov byte ptr es:[bp+si+1],7 ;属性add si,2loop s2add bp,160pop cxloop s1pop cxpop bpmov ax,4c00h ;不要忘了正常退出int 21h
code ends
end start
写成函数的形式:
assume cs:codestack segmentdw 16 dup(0)code segment
start:main:mov ax,stackmov ss,axmov sp,16mov ax,0b800hmov es,axcall sub1mov ax,4c00h ;不要忘了正常退出int 21hsub1:push bp ;保留现场,虽然没什么用,但是要养成习惯push cxmov bp,0 ;行mov cx,22 ;一共有22行需要清屏s1:mov si,0push cxmov cx,80 ;每一行有80个字符s2:mov byte ptr es:[bp+si],0 ;空字符mov byte ptr es:[bp+si+1],7 ;属性add si,2loop s2add bp,160pop cxloop s1pop cxpop bpretcode ends
end start
效果相同
对于字符串的显示程序:
assume cs:codestack segmentdw 16 dup (0)
stack endsdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'
data endscode segment
start:main:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axmov ax,0b800h ;显示段mov es,axmov bx,0mov bp,160 ;行add bp,160mov cx,21s1:mov si,0 ;列push cxmov cx,4s2:call show_yearadd si,2inc bxloop s2add bp,160pop cxloop s1mov ax,4c00hint 21hshow_year:push axmov al,[bx]mov es:[bp+si],almov byte ptr es:[bp+si+1],02h ;注意这里要用byte ptrpop axret
code ends
end start
要求:把试验七的数据显示在屏幕上
assume cs:code
stack segmentdw 0,0,0,0,0,0,0,0
stack ends
;******************************数据段******************************
data segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995'; 21个年份的字符串dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000;21年公司收入数据dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635dw 8226,11542,14430,15257,17800;21年公司员工人数dd 21 dup (0) ;21个人均年收入dw 10
data endscode segment
start:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axmov ax,0b800hmov es,ax;计算人均收入mov si,84mov di,168mov bx,210mov cx,21jisuan:call div_ddadd si,4add di,2add bx,4loop jisuan
;清屏call clear_scr
;显示年份数据mov bx,0mov bp,160mov cx,21year1:mov si,0push cxmov cx,4year2:call show_yearadd si,2inc bxloop year2add bp,160pop cxloop year1;显示收入数据mov bx,84mov bp,180mov cx,21shouru:mov di,0call show_shouruadd bx,4add bp,160loop shouru
;显示员工数据mov bx,168mov bp,200mov cx,21yuangong:mov di,0call word_showadd bx,2add bp,160loop yuangong
;显示人均收入mov bx,210mov bp,220mov cx,21renjun:mov di,0call show_shouruadd bx,4add bp,160loop renjunmov ax,4c00hint 21h;dd除法运算
div_dd:push axpush dxmov dx,0mov ax,[si+2]div word ptr [di]mov [bx+2],axmov ax,[si]div word ptr [di]mov [bx],axpop dxpop axret;清屏
clear_scr:push bppush cxmov bp,0mov cx,22clear1:mov si,0push cxmov cx,80clear2:mov byte ptr es:[bp+si],0168mov byte ptr es:[bp+si+1],0add si,2loop clear2add bp,160pop cxloop clear1pop cxpop bpret;显示一个字节的字符year
show_year:push axmov al,[bx]mov es:[bp+si],almov byte ptr es:[bp+si+1],02hpop axret;显示dword型数据为字符串,存入显示区域
show_shouru:push axpush bxpush cxpush dxpush simov dx,ds:[bx+2]mov ax,ds:[bx]mov si,0s1:push axmov ax,dxmov dx,0div word ptr ds:[294]mov bx,axpop axdiv word ptr ds:[294]push dxinc simov dx,bxmov cx,axjcxz ok1jmp short s1ok1:mov cx,dxjcxz ok2jmp short s1ok2:mov cx,sis2:pop axadd al,30hmov es:[bp+di],almov byte ptr es:[bp+di+1],02hadd di,2loop s2pop sipop dxpop cxpop bxpop axret;转换word型数据为字符串
word_show:push axpush bxpush cxpush dxpush simov ax,ds:[bx]mov si,0s3:mov bl,almov al,ahmov ah,0div byte ptr ds:[294]mov bh,almov al,bldiv byte ptr ds:[294]mov bl,ahmov ah,bhpush bxmov cx,axinc sijcxz ok3jmp short s3ok3:mov cx,sis4:pop axadd al,30hmov es:[bp+di],almov byte ptr es:[bp+di+1],02hadd di,2loop s4pop sipop dxpop cxpop bxpop axretcode ends
end start
运行结果截图:
王爽 汇编语言第三版 课程设计 1相关推荐
- 王爽 汇编语言第三版 第10章 call 和 ret 指令 以及 子程序设计
第10章 call 和 ret 指令 10.1 ret 和 reft 指令 call 和 ret 指令都是转移指令,他们都修改 IP,或同事修改 CS 和 IP .他们经常被共同来实现子程序的设计. ...
- 王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)
汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这 ...
- 王爽汇编语言第三版答案
转载自 https://blog.csdn.net/modiz/article/details/88776695 部分加上自己的分析,感谢 Modiz 汇编语言答案(王爽) 检测点1.1 (1)1个C ...
- 王爽 汇编语言第三版 第9章 转移指令的原理
第九章 转移指令的原理 汇编代码: assume cs:codesgcodesg segments: mov ax,bx ; mov ax,bx 的机器码占两个字节mov si, offset sm ...
- 王爽 汇编语言第三版 第8章( 寻址方式 ) --- 数据处理的两个问题
第八章 数据处理的两个基本问题 8.6 综合应用 示例代码 1: assume cs:codesg,ds:datasgdatasg segmentdb 1024 dup (0) datasg e ...
- 王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)
问题 7.9: 将 datasg 段中前 4 个字母变成大写 汇编代码: assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0, ...
- 王爽 汇编语言第三版 监测点9.2 监测点9.3 补全编程,利用jcxz指令,利用loop指令,实现在内存2000H段中查找第一个值为0的字节,
补全编程,利用jcxz指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中. 而且,截图中给出了是字节.是8位,占通用寄存器的一半空间!区分出CL,CH! 为了区分 ...
- 王爽 汇编语言第三版 第11章 标志寄存器
条件码: ① OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算,如:结构和目标不匹配. ② SF(Sign Flag)符号标志,结果为负时置1,否则置0. ③ Z ...
- 王爽汇编语言第四版答案解析
(暂停更新) 红色的是答案 目录 检测点 1.1 检测点 2.1 检测点 2.2 检测点 2.3 检测点 1.1 (1) 13 如果一个 cpu 有 n 根地址线,则可以说这个 cpu 的地址总线的宽 ...
最新文章
- SonarQube6.2源码解析(二)
- TQ210 —— s5pv210 Linux内核结构
- (王道408考研操作系统)第二章进程管理-第一节4:进程通信(配合Linux)
- 实现与优化深度神经网络
- cocos2d-x之猜数字游戏
- 微信爬虫服务器,微信文章爬虫使用教程 - 八爪鱼采集器
- JavaScript 动态生成表格
- wav怎么转换成mp3?
- 爱奇艺千亿级数据查询服务实践
- 无薪加班的第三天,我去公司打了卡
- JavaWeb:HTML
- ZZNUOJ_C语言1032:员工薪水(完整代码)
- matlab 求全波整流信号的傅里叶系数
- 超级码力在线编程大赛初赛 第3场 1.最大公倍数
- fir滤波器算法c语言程序,FIR滤波器C语言代码
- java学习--装饰器设计模式
- 1718: 身体质量指数
- 免费报名 | 腾讯云自研数据库CynosDB交流会
- linux yum pcre安装路径,yum 安装的pcre源码目录在哪
- 数字化风控的八个应用场景(上)