emu8086顺序循环例题(课堂知识)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 例1:在键盘上输入两个一位数,在屏幕上显示它们的积。(顺序)
- 代码
- 例2 :统计DAI字单元中二进制数据中含1的个数,结果存于DA2单元中。
- 分析:可以利用移位指令,将待判断的字数据一位一位地移到进位位CF中,然后判断CF是1还是0,以此实现对二进制数据中含1的个数统计。
- 代码
- 例3 :求两个多字节数之和,这两个数在数据段10050H地址开始的内存单元中连续存放,低位在小地址一端,运算结果放在这两个数之后。设这两个多字节数均为8个字节长
- 代码
- 例4 :统计由DATA单元开始的数据块中能被3整除的数的个数。结果存于COUNT单元中。(设数据块中共有10个无符号数)
- 分析:可以采用除法指令,对待判断的无符号数做除3操作,然后检查余数是否为零,若为零,则该数能被3整除。利用计数控制循环
- 代码
前言
作为一名在校大学生,我将近期所学的知识进行总结。如有不足,欢迎交流。
例1:在键盘上输入两个一位数,在屏幕上显示它们的积。(顺序)
代码
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txtorg 100hMOV AH,1
INT 21H ;键盘读入1第一个数
MOV BL,AL ;保存到BLMOV AH,2 ;输出回车
MOV DL,0DH
INT 21H MOV AH,2 ;输出换行
MOV DL,0AH
INT 21H MOV AH,1 ;读入第二个数字于AL
INT 21H SUB AL,30H ;将读入的ASCALL转化为10进制
SUB BL,30H MUL BL ;求得(AL)*(BL)=AX
MOV BL,10 ;将10进制转化回去DIV BL ;分离出十位和个位
ADD AX,3030H ;转化为相应的ASCALL码
MOV BX,AX ;result保存在BXMOV AH,2 ;输出回车
MOV DL,0DH
INT 21HMOV AH,2 ;输出换行
MOV DL,0AH
INT 21HMOV DL,BL ;输出十位
MOV AH,2
INT 21H MOV DL,BH ;输出个位
INT 21H
MOV AH,4CH ret
例2 :统计DAI字单元中二进制数据中含1的个数,结果存于DA2单元中。
分析:可以利用移位指令,将待判断的字数据一位一位地移到进位位CF中,然后判断CF是1还是0,以此实现对二进制数据中含1的个数统计。
代码
; multi-segment executable file template.data segmentvar1 DW 1234H
var2 DB 0 endscode segment
start:
; set segment registers:mov ax, datamov ds, axmov es, axmov bl,0 ;统计计数器清0mov ax,var1 ;变量1取出给axls:cmp ax,0 ;判断ax是不是等于0 若等于0,则退出je tuichu ; SHL ax,1 ;逻辑左移JNC ls ;cf等于0 统计计数器不需处理,继续判断ADD BL,1 ;cf = 1 BL++jmp lstuichu:mov var2,blmov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.
例3 :求两个多字节数之和,这两个数在数据段10050H地址开始的内存单元中连续存放,低位在小地址一端,运算结果放在这两个数之后。设这两个多字节数均为8个字节长
代码
; multi-segment executable file template.data segmentendscode segment
start:
; set segment registers:mov ax, datamov ds, axmov es, ax ;;;;;;;;;;;;;;;;;;;;;;;;;; mov AX,1000H mov DS,AX ;DS=1000HMOV SI,50H ;第一个数的指针MOV DI,58H ;第二个数的指针 MOV BX,60H ;结果指针MOV CX,4 ;循环次数CX=4CLC ;清空CF AA: MOV AX,[SI] ;取第一个字到AXADC AX,[DI] ;AX<- AX+[DI]+CFMOV [BX],AX ;存一个字到[BX]中PUSHF ;保护进位 CF ADD可能影响CFADD SI,2 ;修改第一个数的地址指针ADD DI,2 ;修改第二个数的地址指针ADD BX,2 ;修改结果的地址指针POPF ;恢复标志寄存器 ADD可能影响CFLOOP AA ;CX-1,若不为0,转AAHLT ;CX为0,暂停;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.
例4 :统计由DATA单元开始的数据块中能被3整除的数的个数。结果存于COUNT单元中。(设数据块中共有10个无符号数)
分析:可以采用除法指令,对待判断的无符号数做除3操作,然后检查余数是否为零,若为零,则该数能被3整除。利用计数控制循环
代码
; multi-segment executable file template.data segment;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
var DB 12,13,14,15,16,17,18,19,21,24
count db 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
endsstack segmentdw 128 dup(0)
endscode segment
start:
; set segment registers:mov ax, datamov ds, ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LEA SI,var ;地址指针SI指向变量var的偏移地址 MOV BL,0 ;统计计数器清0 MOV CX,10 ;循环次数 XH: MOV AL,[SI] ;取数到ALMOV DL,3 ;除数放到DL寄存器 MOV AH,0 ;高八位补0DIV DL ;AX/DL 余数在AH寄存器 判断能否被3整除,只需要判断AH=0CMP AH,0 ;若AH=0能被整除 AH!=0,不能被整除 JE J1 ;统计计数器加1 JMP LX J1: ADD BL,1; ;统计计数器加1LX: INC SI ;指针加1 LOOP XH ;继续循环 MOV count,BL ;循环结束,存放程序结果 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov ax, 4c00h ; exit to operating system.int 21h
endsend start ; set entry point and stop the assembler.
emu8086顺序循环例题(课堂知识)相关推荐
- C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- C语言第五讲,语句 顺序循环选择.
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- 顺序循环队列队满队空的两种判别方式
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- java循环例题while型_Java基础--while、do-while、for循环结构(附例题)
在日常生活中,我们会重复做某些事情,如将相同的试卷打印三份就需要用到循环结构.在Java中,有三种常用循环结构:while循环.do-while循环.for循环,下面将为读者一一介绍: 1.while ...
- c语言中循环并列语句顺序,C语言第五讲,语句 顺序循环选择.
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- 循环神经网络(RNN)知识入门
循环神经网络(RNN)知识入门 原创:方云 一. RNN的发展历史 1986年,Elman等人提出了用于处理序列数据的循环神经网络(Recurrent Neural Networks).如同卷积神经网 ...
- Python编程语言学习:列表与字典互转的几大方法集锦、从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略
Python编程语言学习:列表与字典互转的几大方法集锦.从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略 目录 列表与字典互转的几大方法集锦 T1.基于两个列表利用zip函数来构造字典 <
- 【C语言练习】【指针】定义一个函数move,实现将长度为n、名为a的序列中,各元素依次顺序循环,右移m个位置
题目 下列函数move的功能是:实现将长度为n.名为a的序列中,各元素依次顺序循环,右移m个位置. 例如:对于序列a=(1,3,5,7,9,11),若m=2,则循环右移后的结果为a=(9,11,1,3 ...
- 数据结构之顺序循环队列
顺序循环队列 思维导图: 队列的定义: 队列的特点 队列的基本操作: 顺序循环队列基本操作的实现: 情况一:rear和front指向同一位置时 队列定义: 队列初始化: 入队: 出队: 队列判空: 返 ...
最新文章
- 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录...
- Android stutdio2.2 启动模拟器出现“/dev/kvm is not found.”解决方法
- ZOJ Problem Set - 1048 Financial Management
- Xcode 真机沙盒
- IE9 CSS 因 Mime 类型不匹配而被忽略“问题
- g标签 怎么设置svg_SVG g元素
- 第一届LCI workshop @ ICCV 2019, 欢迎投稿
- 回归返回2个以前标签_大本回归蝙蝠侠,同期将出现2个布鲁斯,网友:可以互相串个门...
- Jquery 图片走马灯效果原理
- 出场顺序很重要下一句_孩子爱不爱你,出场顺序很重要
- javascript之querySelector和querySelectorAll
- cad图形如何导入到奥维地图_如何将CAD图导入奥维地图
- 一步步学习微软InfoPath2010和SP2010--第十二章节--管理和监控InfoPath Form Services(IPFS)(3)--安装Fiddler并监控IPFS表单加载过程
- PDF是什么格式?如何编辑PDF文件?
- 奔图3305_奔图 Pantum P3305DN 驱动
- Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介【转自游戏蛮牛】
- 设置WDS桥接成功,上不了网怎么办?路由器WDS无线桥接设置正确方法
- body与html 会有间隙,css – thead和tbody之间的间距
- java 各种编码间转换
- 进入docker容器的方法
热门文章
- H3C S5120配置SSH认证
- USB2.0官方协议手册阅读笔记(1)——总体介绍
- 增益可控射频放大器(D 题 本科组)-- 2015 年全国大学生电子设计竞赛试题
- 计算机辅助教学出现在哪个时期,2013年1月自学考试小学数学教学论试题
- exe文件反编译为源文件
- 传统目标跟踪——CamShift算法(改进MeanShift)
- quartz的配置详解
- 18.深入浅出:信号的转换——参考《模拟电子技术基础》清华大学华成英主讲
- win11 win10更新后 鼠标右键新建文本文档(.txt) 快捷方式消失
- Java教程之使用Jsoup实现简单的爬虫技术