
今天刚考完汇编,看了那些垃圾试题很郁闷。给你写下吧。
data segment
input db 'please input ont char:$'
output1 db 'it is a number$'
output2 db 'it is not a number$'
change db 0ah,0dh,'$'
data ends
code segment
main proc far
assume cs:code ,ds:data
start:
mov ax, data
mov ds,ax
mov ah,09
mov dx,offset input
int 21h
mov ah,01h
int 21h
push ax
mov ah,09h
mov dx,offset change
int 21h
pop ax
mov ah,09h
cmp al,'0'
jb nott
cmp al,'9'
ja nott
mov dx,offset output1
int 21h
jmp exit
nott:
mov dx,offset output2
int 21h
exit:
mov ah,4ch
int 21h
main endp
code ends
end start
输入一个字符判断是不是数字。090622
data segment
string db 'abBADFGF0'
data ends
code segment
main proc far
assume cs:code ,ds:data
start:
mov ax,data
mov ds,ax
mov si,0
lop:
cmp string[si],'0'
je exit
cmp string[si],61h
jae next
xor string[si],20h
next:inc si
jmp lop
exit:
mov ah,4ch
int 21h
main endp
code ends
end start
把string串中的大写改为小写090622
微机分支程序结构程序设计出现的问题及解决办法:
一、实验内容
熟悉循环结构设计与调试
题目1要求:从NN单元开始的10个连续单元中存放有10个无符号数,从中找出最小的送入MM单元中。
流程图:
选做题要求:试编写一程序,要求比较两个字符串SREING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NOMATCH”
二.实验步骤
1将MASM文件夹复制到D:盘根目录下
2将编好的代码复制到MASM文件夹中,扩展名改为’asm’
3搭建DOSBox-汇编环境
4mount c: d:\wmasm 回车后键入C:,回车
5对源文件进行汇编
c:\masm xff1228asm回车
连续输入三个回车(若提示有错误返回源文件修改并重复此步骤)
6对目标文件进行链接
c:\link xff1228obj回车
连续键入三个回车
7运行程序
c:\xff1228exe回车
8调试程序
C语言的分支选择语句主要有两个1、if else语句 ;2、switch语句。C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
扩展资料:
单分支程序(if then)
例
双字长数存放于dx和ax寄存器(高位于dx),求该数的绝对值(用16位指令)
算法分析:判断数正负,正数(首位为0),不需处理,负数(首位为1),对该数求补,即反码加一
复合分支程序
例
从键盘输入一位十六进制数,将其转换为十进制数显示输出
算法分析:
输入为数字(30h~39h),直接输出
为大写字母A~F(41h~46h)时,可减11h
a~f时(61h~66h),可减去31h得到30h~35h(0~5的ascii码),再输出2位十进制数字,
其他输入为非法输入,退出程序
多分支程序
采用分支向量表法,int 21h指令就是根据中断类型号21h4得84h直接到84h内存中的向量表取出中断向量(即系统子程序的首地址),来执行一段程序,我们把各分支地址集中存放于分支向量表中,根据分支号快速进入分支
例
根据键盘输入的一位数字1~4,使程序转移到4个不同的分支中去,以显示键盘输入的数字
算法分析:建立一个分支向量表branch,集中存放4个分支的偏移地址,因偏移地址为16位,所以每两个字节存放一个偏移地址,据输入的数字指向分支向量表,从表中取出对应分支的偏移地址,用jmp branch[bx]指令间接寻址方式转向对应分支
循环程序设计
循环有两种结构,do while和do null
do while先判断条件,再执行循环,do null先循环一遍再判断要不要下次循环
例
把bx寄存器中的二进制用16进制数格式显示输出
算法分析:
bx寄存器每4位表示一位16进制数位,从左到右循环移位,每移四位,就把要显示的4位二进制位移到最右边。取出最右边的4位,加上30h,转换成8位ascii字符码。因显示输出的十六进制是数字(30h~39h)和A~F(41h~46h),所以8位二进制大于39h时,应再加上7,程序采用计数循环,计数值为4
例
从键盘输入一个四位的十六进制数(其中字母大写),并将其转换为二进制数显示输出
算法分析:该程序需要两段循环,第一个循环接收键盘输入的16进制数,30h~39h时减30h,输入为41h~46h时,减37h,应把四次的输入拼装成四位16进制数存放在bx寄存器,第二个循环利用16次位移从左到右显示bx寄存器中的二进制数
条件循环程序
循环体有分支时,依据标志位判断,标志位为1表示执行a *** 作,为0表示执行b *** 作等,把这种标志字称为逻辑尺
例
先从键盘输入8位二进制数作为逻辑尺,再从键盘输入一个英文字母,根据逻辑尺当前的最高位标志显示输出该英文字母的相邻字符,标志位为0则显示前趋字符,标志位为1则显示其后继字符,显示相邻字符后,逻辑尺循环左移一位再接收下一个英文字母的输入,并依据逻辑尺显示相邻字符,直到回车键结束程序
算法分析:8位二进制数的输入构成一个8次循环,把输入整合到
8位寄存器bl中。键盘输入一个英文字母后依据逻辑尺最高标志位显示相邻字符,把最高位移到cf位,以cf位决定显示,构成一个条件循环,以回车键退出循环
打开CSDN,阅读体验更佳
算法导论考试题目_Spike_Bebop的博客
A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并 D 原问题和子问题使用相同的方法解 14下列算法中不能解决0/1背包问题的是(A ) A 贪心法 B 动态规划 C 回溯法 D 分支限界法
继续访问
Matlab入门基础详解_weixin_43731886的博客
1直接输入法 matlab在创立数组时以逗号或空格表示分列,分号或回车表示分行。数组开头“[”、结尾“]” 行数组:如a=[1,2,3,8,-1] 列数组: b=[1;2;3;8;-1] 或a’ 矩阵:A= [2,4,1;8:-2:4;2,4,6]
继续访问
实验1:汇编语言语法练习与分支循环子程序设计doc
实 验 报 告 2018 / 2019 学年 第 1学期 课程名称 微型计算机原理与接口技术 实验名称 实验1汇编语言语法练习与分支循环子程序设计 实验时间 2018 年 10 月 22 日 指导单位 通信工程学院 指导教师 祁正华 学生姓名 杨单妮 班级学号 17120205 学院(系) 通信工程学院 专 业 通信工程 PAGE 5 实 验 报 告 实验名称 汇编语言语法练习与分支循环子程序设
热门推荐 第一章: 利用神经网络识别手写数字
人类视觉系统是大自然的一大奇迹。 考虑下面的手写数字序列: 大部分人能够毫不费力的识别出这些数字是 504192。这种简单性只是一个幻觉。在我们大脑各半球,有一个主要的视觉皮层,即V1,它包含14亿个神经元以及数以百亿的神经元连接。而且人类不只是有V1,还有一系列的视觉皮层——V2,V3,V4和V5,它们能够执行更加复杂的图像处理。我们可以将大脑想象成一台超级计算机
继续访问
数据结构复习提纲(必考知识点整理)_a1043362562的博客_数据
1数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。 2数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。
继续访问
MATLAB基础_dfql83704的博客
321 直接输入法 最简单的建立矩阵的方法是从键盘直接输入矩阵的元素,输入的方法按照上面的规则。建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终止值。还可以
继续访问
微机原理与接口技术-指令
上级目录 目录 指令分类 数据传送指令 通用数据传送指令 累加器专用传送指令 地址传送指令 标志传送指令 数据类型转换指令 算数运算指令 加法指令 减法指令 乘法指令 除法指令 十进制调整指令 位运算指令 逻辑运算指令 移位指令 循环移位指令 串 *** 作指令 基本串 *** 作指令 重复前缀指令 控制转移指令 无条件转移指令(长转移) 条件转移指令(短转移, -128~127的距离内) 循环控制指令 过程调用与返回指令 中断指令 处理器控制指令 标志位 *** 作指令
继续访问
8086系列(8):逻辑尺
题目 设有数组X和Y。X数组中有X1,…,X10;Y数组中有Y1,…,Y10。试编制程序计算Z1=X1+Y1,Z2=X2+Y2,Z3=X3-Y3,Z4=X4-Y4,Z5=X5-Y5,Z6=X6+Y6,Z7=X7-Y7,Z8=X8-Y8,Z9=X9+Y9,Z10=X10+Y10,结果存入Z数组。 思路 对于这种问题可以使用循环结构来完成,由于每次循环的 *** 作位不同,我们可以事先设立标志位存放于逻辑尺中,进入循环后取出每一个位就可以判断做哪种 *** 作了。 代码 datasg segment x dw 0,1,
继续访问
数据结构算法笔记_Alanders的博客
所有的简单排序方法(包括:直接插入、冒泡和简单选择)和堆排序的空间复杂度为O(1) 快速排序为O(logn),为栈所需的辅助空间 归并排序所需辅助空间最多,其空间复杂度为O(n) 链式基数排序需附设队列首尾指针,则空间复杂度为O(rd) 排
继续访问
[学习笔记] python深度学习---第四章 机器学习基础_Cr_南猫的博客-CS
一、机器学习的四个分支 1 监督学习 这属于目前最常见的机器学习类型。给定一组样本,它可以学会将输入数据映射到已知目标(也叫标注annotation)。近年来广受关注的深度学习应用几乎都属于监督学习,比如光学字符识别、语音识别、图像识别和
继续访问
逻辑尺的使用
今天看汇编程序,看到一道题,X1-Y1,X2-Y2,X3+Y3X8-Y8,X9+Y9,X10-Y10,加法,减法毫无规律可循,最后书本介绍了“逻辑尺”的方法:设置一个设置了一个字型的变量,然后使用逻辑右移,读取CF中的1/0,从而确定知道该次运算的预算法则。闲来无聊,便用JAVA模拟了一下逻辑尺的使用package logicRule;/ 逻辑尺的模拟使用
继续访问
汇编语言实现四则运算
32 位模式下,MUL(无符号数乘法)指令有三种类型: 第一种执行 8 位 *** 作数与 AL 寄存器的乘法; 第二种执行 16 位 *** 作数与 AX 寄存器的乘法; 第三种执行 32 位 *** 作数与 EAX 寄存器的乘法。 例如,当 AX 乘以一个 16 位 *** 作数时,乘积存放在 DX 和 AX 寄存器对中。其中,乘积的高 16 位存放在 DX,低 16 位存放在 AX 32 位模式下,DIV(无符号除法)指令执行 8 位、16 位和 32 位无符号数除法。其中,单寄存器或内存 *** 作数是除数。格式如下:
继续访问
慕课袁春风老师《计算机系统基础》一二三部分练习题_GloomyHarbor的博客
解析: D、现代计算机的主存储器由半导体存储器构成,其中存放信息的地方称为存储阵列;每个存储阵列包含若干个存储单元,每个存储单元由若干个记忆单元(cell)构成,每个记忆单元存放一位信息(0或1)。 某一台计算机的主存储器编址方式,总是
继续访问
python中的小知识点_代码小学渣的博客
input()split()用法:接收多个输入。返回的数据类型是str year,month,day=map(int,input()split('/'))#2018/2/1#如果是整数就需要转化为int才能正常使用。 map()用法:map(function, iterable, …),python3 返回迭代器,要加li
继续访问
汇编语言程序设计 实验6 分支程序设计
本文章为个人博客的备份版本、作者:小游、作者博客:点击访问 实验目的:掌握分支程序的基本编程方法。熟悉数制转换。用LOOP指令、条件转移指令和向量地址法实现程序转移。 1编写程序,如果输人的是大写字母,则输出对应的小写字母;如果输入的是小写字母则输出对应的大写字母;如果输人的是数字,原样输出;按回车结束。 code segment assume cs:code ; 代码部分 start: inchr: ; 这里我们读取键盘的输入 mov ah,1 ;输入字符 int 21
继续访问
汇编语言及应用——分支结构程序设计
一、实验目的 掌握条件转移指令的使用方法及指令对标志寄存器中各标志位的影响;掌握标志位和转移指令之间的关系;会用条件转移指令和无条件转移指令设计多分支结构程序;掌握设置断点调试程序的方法。 二、示 例 内存自BUF单元开始的缓冲区连续存放着10个学生的英文分数,编程序统计其中90~100,60~89,60以下者各有多少人并把90-100分人数结果存放在P1单元中、60-89分人数结果存放在P2单元中,60分以下人数结果存放在P3单元中(P1、P2、P3为数据段的单元),最后把P1、P2、P3中的数以”P
继续访问
汇编语言编一程序段,求双字(DX,AX)的绝对值
a100 mov ax,ffff;把双字长数的低字放到AX中 mov dx,ffff;把双字长数的高字放到DX中 test dx,8000;测试双字长数的符号 jz 0113;如果是非负数,则直接保存 neg dx;如果是负数,则求补 neg ax;求补 sbb dx,0 int 3 g=073f:0100 0113 运行附图如下:
继续访问
汇编语言的程序设计方法(循环结构和分支结构)
汇编语言中常见的形式有:顺序程序设计,分支程序设计,循环程序设计以及子程序设计 1今天通过实例来详细说明分支程序设计,和循环程序设计 分支程序设计实例 给定一下符号函数: 给定X值,假设为-25,且存放于X单元,函数值Y存放于Y于单元,根据给定的X值确定Y得值 程序如下 DATAX SEGMENT x DB-25 y DB DATAX ENDS CODEX SEG
继续访问
第五章 57汇编程序设计举例
57汇编程序设计举例 汇编源程序的设计步骤: ①分析问题,建立数学模型 ②确定最佳算法 ③合理分配存储单元和寄存器 ④绘制流程图 ⑤编写程序 ⑥调试程序 571程序基本结构 程序设计的三种基本结构:顺序结构、选择结构、循环结构 顺序结构:顺序结构程序中,完全按照指令先后顺序逐条执行。 选择结构 选择结构又称分支结构,有以下两种形式: ①它们共同的特点是:运行方向是向前的,在某一种特定条件下,只能执行多个分支中的一个分支。 ②程序的分支一般用
继续访问
微机原理复习整理
第一章 微型计算机系统概述 1 微型计算机系统组成 微处理器:运算器、控制器、寄存器 微型计算机:输入输出接口、总线、内存 微型计算机系统:由硬件和软件共同组成的完整的计算机系统 2 系统总线 地址总线AB 输出将要访问的内存单元或I/O端口的地址 地址线的多少决定了系统直接寻址存储器的范围 数据总线DB CPU读 *** 作时,外部数据通过数据总线送往CPU CPU写 ***
继续访问
树状数组
树状数组 学之前感觉这是个非常非常难的数据结构,学完才发现也没有想象中那么难,但是题可以出的非常难。 这里就有一些同学坚持认为树状数组没有用,其实树状数组虽然功能少一点,却也是很有优势的。1常数小;2代码短;3内存小; 翻了翻学习资料的文件夹,发现关于这两个数据结构的课件还是比较多的,难度分布也非常的广泛 前两天强行抓着wzx讲这个,感觉在讲的过程中自己也更明白
继续访问
ARM异常、中断以及他们的向量表分析
作者:wogoyixikexie@gliet 以前,我一直很疑惑这个“ARM异常、中断以及他们的向量表”是怎么回事,他们到底是怎么实现的,没有想到今天偶然看到(ARM System Developers Guide: Designing and Optimizing System Software的ARM异常、中断以及他们的向量表的章节,豁然开朗。——ARM嵌入式系统开发:软件设计与优
继续访问
Java基础之数组与集合
Java基础之数组与集合一、数组 一、数组 数组保存的是一组有顺序的、具有相同类型的数据。在一个数组中,所有数据元素的数据类型都是相同的。可以通过数组下标(索引)来访问数组,数据元素根据下标的顺序,在内存中按顺序存放。本节的主要内容是介绍数组的基础知识。 数组的定义: 数据类型 数组名 [] = new 数据类型[数组长度]; 要想知道数组的大小可以使用数组的 length 属性 语法:数组名length 初始化: int arr [] = new int[12]; arr[0] =
继续访问
汇编程序求一个双字节数AX:BX的绝对值,放入CX:DX中。
汇编程序求一个双字节数AX:BX的绝对值,放入CX:DX中,高位放入CX CODE SEGMENT ASSUME CS:CODE START: MOV CX,AX MOV DX,BX TEST CX,8000H ;将CX与8000H与 *** 作 看是否最高位为1 JZ EXIT ;若结果为0 则为整数 结束dos NOT DX NOT CX ADD DX,1 ;将BX取反+1 即求补 ADC CX,0 ;目的是将CF进位加进去 因为为双字 末
继续访问
汇编实验二 分支与循环程序设计
实验二 分支与循环程序设计 一、实验目的 1、掌握程序设计中的3种基本结构(顺序结构、选择程序、循环程序)。 2、熟练使用汇编语言的指令:数据传送类指令、数据运算类指令、逻辑判断类指令与转移指令、循环指令等。 3、初步了解系统功能调用的使用方法,尝试使用01H号功能调用进行字符输入的方法及使用02H号功能调用进行字符输出(显示)的方法。 二、实验环境与设备 计算机一台,并且安装Windows *** 作系统和macro assembler 50以上版本的系统软件。 三、预备知识 1、掌握汇编
继续访问
汇编语言的分支程序设计与循环程序设计
汇编语言的分支程序设计: 例题1:比较三个无符号数的大小,按照从大到小的顺序排列 关键的语句是:无符号数,因此所用语句是JAE实现跳转: 此外比较两个 *** 作数所用的是CMP,交换两个 *** 作数的是XCHG 书上的代码: 代码1:这样写法比较占用寄存器,但是寄存器之间交换数值比较快 ;程序名称:实现三个无符号数的由小到大的排序 DATAS SEGMENT BUFFER DB
继续访问
Part2程设分支程序设计+循环程序设计
一、分支程序设计 if语句的易错点、switch的易错点。 二、循环程序设计 for循环、while、do-while常见的错误。
继续访问
最新发布 win32汇编·指令
win32汇编·指令常用伪指令数字常量字符串常量预留空间复制重复符号定义伪指令等号伪指令 *** 作符伪指令算术运算符逻辑 *** 作符关系 *** 作符框架定义样例函数声明语句include 语句程序结束跨行语句数据存放invoke伪指令MessageBox输入输出有关的API函数printfscanf分支与循环单分支结构无符号类比IF_THEN_ELSE结构升序数组查找一个数(折半查找)SWITCH_CASE结构分支程序 [名字] 助记符 < *** 作数> [;注释] 常用伪指令 类型 助记符 简写 字节数 数字
继续访问
使用分支向量
比如:
buf db 1,2,6,-6,-3,8,9
num db $-buf
mov cl,num
xor ch,ch
lea si,buf
cld
@0:
lodsb
cmp al,0
jl @1
mov ah,2
mov dl,'+'
int 21h
jmp @2
@1:
mov ah,2
mov dl,'-'
int 21h
@2:
loop @0
以上就是关于汇编程序(很急)全部的内容,包括:汇编程序(很急)、微机分支程序结构程序设计出现的问题及解决办法、分支结构在汇编语言中有哪些实现方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)