例
双字长数存放于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结构分支程序 [名字] 助记符 < *** 作数> [;注释] 常用伪指令 类型 助记符 简写 字节数 数字
继续访问
使用分支向量
1loop循环功能应配合哪个缓存器
CX寄存器
LOOP指令,是循环指令,循环次数由计数寄存器CX指定。是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次。执行LOOP指令时,CPU自动将CX的值减1,若CX=0,则结束循环;否则,重复执行循环体。
2汇编语言离开程序回到DOS应使用哪个INT功能。
MOV AH,4CH
INT 21H
3简介JMP/JC,CMP/PEST用法。
计算机汇编语言中的一种跳转指令当需要分支程序时,散转程序有时可以帮我们实现。使用指令JMP @A+DPTR,可实现多分支转移。它是根据某种输入或运算的结果,分别转向各个处理程序段取执行程序。
JMP $
就是跳转到当前的地址, 所以它是一个死循环,不继续执行下面的程序了。
JC addr
jump if carry:如果有进位则跳转到addr
一般可以跟在CMP指令后面(2个无符号数相减)
表示目的 *** 作数小于源 *** 作数
cmp s,d
比较两个数,影响寄存器
4段处理器有哪几个。
你问的是段寄存器么?
5RESET后系统从哪个地址开始执行。
当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不稳定,主板控制芯片组会向CPU发出一个Reset(重置)信号,让CPU初始化。当电源开始稳定供电后,芯片组便撤去Reset信号,CPU马上就从地址FFFF0H处开始执行指令,这个地址在系统BIOS的地址范围内,无论是Award BIOS还是AMI BIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。
分支结构:
DATAS SEGMENT
GRADE DW 56,69,84,82,73,88,99,63,100,80
S5 DW 0
S6 DW 0
S7 DW 0
S8 DW 0
S9 DW 0
S10 DW 0
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
MOV CX,10
MOV BX,OFFSET GRADE
COMPARE:
MOV AX,[BX]
CMP AX,60
JL FIVE
CMP AX,70
JL SIX
CMP AX,80
JL SEVEN
CMP AX,90
JL EIGHT
CMP AX,100
JL NINE
INC S10
JMP SHORT CHANGE_ADDR
NINE:
INC S9
JMP SHORT CHANGE_ADDR
EIGHT:
INC S8
JMP SHORT CHANGE_ADDR
SEVEN:
INC S7
JMP SHORT CHANGE_ADDR
SIX:
INC S6
JMP SHORT CHANGE_ADDR
FIVE:
INC S5
CHANGE_ADDR:
ADD BX,2
LOOP COMPARE
MOV AH,4CH
INT 21H
CODES ENDS
END START
; 下面的程序是16位汇编,以11个十进制数-112,56,72,98,32,-65,118,83,108,125,67(对应的十六进制数:90H,38H,48H,62H,20H,0BFH,76H,53H,6CH,7DH,43H)为例,编译通过,运行正确。
; Program Name: BubblingASM
Bubbling SEGMENT
ASSUME CS:Bubbling,DS:Bubbling,ES:Bubbling
ORG 100H
Start: MOV CX,Elem_Num
Scanning: PUSH CX ;入栈保存外循环次数
LEA SI,Array ;数组首地址装入源变址寄存器
Compare: PUSH SI
POP DI ;当前数组元素地址赋给目的变址寄存器,以备交换之用
LODSB ;将当前数组元素读入累加器
CMP AL,[SI] ;当前数组元素与相邻的下一个数组元素相比较
JGE NextOne ;若小于或等于,不作数据交换,处理下一个数组元素
XCHG AL,[SI] ;若大于,交换数组元素
STOSB ;保存数值较小者
NextOne: LOOP Compare ;处理下一个数组元素
POP CX ;外循环次数出栈
LOOP Scanning ;下一趟比较
Exit_Proc:MOV AX,4C00H ;结束程序
INT 21H
ORG 4000H
Array DB -112,56,72,98,32,-65,118,83,108,125,67 ;需要排序的数据
Elem_Num EQU ($-Array)/TYPE Array-1 ;外循环次数
Bubbling ENDS
END Start
汇编语言程序设计的基本步骤 了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了。一个程序通常具有顺序、分支、循环和子程序4种结构形式。顺序程序结构就是指完全按顺序逐条执行的指令序列。在程序设计过程中,顺序结构大量存在,屡见不鲜。但一个完整的程序只是逐条去执行指令,这非常少见。常见的程序结构,是上述4种结构的混合体。一般来说,编制一个汇编语言程序的步骤如下:(1) 分析题意,确定算法或算法思想。算法是指解决问题的方法和步骤。比如现有的一些计算方法和日常生活中解决问题的逻辑思维推理方法等。(2) 根据算法画出流程图,简单的情况也可不画。画出描述算法的流程图,可以首先从图上检验算法的正确性,减少出错的可能,使得动手编写程序时的思路更加清晰。(3) 分配存储空间和工作单元,合理地使用寄存器。分配存储空间和工作单元,是指存储空间的分段和数据定义。另外,由于寄存器的数量有限,编写程序时经常会感到寄存器不够用。因此,对于字节数据,要尽量使用8位寄存器。而采用适当的寻址方式,也会达到节省寄存器的目的。(4) 根据流程图编写程序。这是编制汇编语言程序最为重要的一步。算法里规定的功能,是要通过一条条指令描述出来的。为了提高编程能力,对于初学者,一是要多阅读现有的程序,以学习别人的编程经验;而更为重要的是,必须多亲自动手编写,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。(5) 上机调试运行程序。通过汇编的源程序,只能说明它里面不存在语法错误。但是它是否能达到算法所要求的预期效果,还必须经过上机调试,用一些实验数据来测试,才能够真正地得出结论。可以这么说,即使是一个非常有经验的程序员,也没有百分之百的把握说他编写的程序一次就成功。 用流程图表示算法 流程图用一些图形框来代表各种 *** 作。用图形表示算法,直观形象,可以用来帮助人们对算法的理解。下图给出了一些常用的流程图符号。
上图中的判断框(菱形)用来对一个给定的条件作出判断,以决定如何执行其后的 *** 作。它有一个入口,两个出口,如下图(a)所示。
连接点(圆圈)是用来将画在不同地方的流程线连接起来。例如在下图(b)里,有两个圈里写着数字1的圆圈,它表示是从左边的1出来,进到右边图的1里(这由流程线的方向给出)。可以看出,这两个点其实就是同一个点,只是由于画不下而分开来画的。用连接点,可以避免流程图中的流程线相互交叉或过长,从而使流程图清晰。
注释框不是流程图中必需的部分。在流程图中使用它,是为了对流程图中的某些框的 *** 作做一些必要的说明,以便使人们能够更好地通过流程图来理解算法。
处理框反映做些什么样的 *** 作,如把某个单元的内容送入某个寄存器,从某个存储单元取出数据等。它是流程图里最为本质的、出现最多的图形框。
输入/输出框反映程序的输入和输出情况。计算机程序无外乎接收数据,进行处理,然后加以输出,所以输入/输出框是必不可少的。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
,老师让交作业,可是我都不会做,怎么办,只好上BAIDU来请教高手了
作业有两题,如下,有高手愿意帮助小弟么,给加分啊
1:从键盘输入一序列字符,然后按小写字母数字字符和其他字符分类计数,最后分别显示出这三类字符的计数结果(顺序和分支程序设计)
2:把AX寄存器中存放的16位二进制数分别转换为八进制和十六进制数,并在屏幕上显示(循环程序设计)
跪求答案~~~~~~~
解析:
我只能给你写主程序,其它的自己加吧。
第一题:先定义一个内存缓冲区,然后用dos功能调用
从键盘输入字符串到缓冲区。然后将缓冲区数据分类,
DL存小写字母个数,DH存数字个数,BH存其它字符个数。
BUFF DB 100 ;定义100字节缓冲区
DB ;系统填入实际输入字节数
DB 100 DUP()
MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET BUFF
MOV AH, 0AH ;10号功能调用,从键盘
;输入字符,回车键结束。
INT 21H
MOV BX, DX
MOV CL, [BX+1]
LEA SI, OFFSET BUFF
ADD SI, 2
XOR BX, BX
XOR DX, DX
BEGIN:MOV AX, [SI]
CMP AX, 'z'
JA THREE
CMP AX, 'a'
JL TWO
INC DL
JMP NEXT
TWO: CMP AX, '9'
JA THREE
CMP AX, '0'
JL THREE
INC DH
JMP NEXT
THREE:INC BH
NEXT: INC SI
LOOP BEGIN
MOV AH, 2
INT 21H
MOV DL, 20H
INT 21H
MOV DL, DH
INT 21H
MOV DL, 20H
INT 21H
MOV DL, BH
INT 21H
第二题:先定义缓冲区存放结果,二进制转换为八进制
时,三位二进制为一位八进制,16位共6位;转16进制
时,4位二进制为一位16进制,共4位。显示要用ASCII码,
所以每一位占一个字节,共10个字节。所以至少定义10
字节的缓冲区。
BUFF DB 20 DUP() ;定义20字节缓冲区
MOV AX, DATA ;将数据装入AX
MOV DS, AX
LEA DI OFFSET BUFF ;DI指向缓冲区首字节
XOR BX, BX ;BX清零
MOV CL, 9 ;设置循环次序
ROL AX, 1 ;八进制首位转换
RCL BX, 1
JMP NEXT
BEGIN: XOR BX, BX ;八进制其它5位转换
PUSH CL
MOV CL, 3
ONE: ROL AX, 1
RCL BX, 1
LOOP ONE
POP CL
DEC CL
JMP NEXT
BEGIN2:XOR BX, BX ;16进制转换
PUSH CL
MOV CL, 4
TWO: ROL AX, 1
RCL BX, 1
LOOP TWO
POP CL
DEC CL
CMP CL, 0
JE NEXT2
NEXT: AND BX, 30H ;转ASCII码
MOV [DI],BX ;储存
INC DI
CMP CL, 4
JA BEGIN
JL BEGIN2
MOV [DI],20H
INC DI
JMP BEGIN2
NEXT2:MOV DX,OFFSET BUFF ;DX指向缓冲区首字节
MOV AH,9 ;9号功能调用
INT 21H
第五个,你看看data segment
csreg dw
ipreg dw
data ends
code segment
assume cs:code,ds:data
start: cli
mov ax,data
mov dx,ax
mov dx,203h
mov al,36h
out dx,al
mov dx,200h
mov ax,5000
out dx,al
mov al,ah
out dx,al
;初始化8253
mov ax,350dh
int 21h
mov ax,es
mov cs,ax
mov ip,bx
push ds
mov dx,seg int_proc
mov ds,dx
mov dx,offset int_proc
mov ax,250dh
;新向量
int 21h
pop ds
mov dx,21h
in al,dx
and al,11011111b;允许IR5中断
out dx,al
mov bx,10;中断次数
sti
ll:jmp ll;等待硬件中断
int_proc:push ds
mov ax,data
mov ds,ax
mov dx,offset mess
mov ah,09
int 21h
mov al,20h
out 20,al;发中断结束命令
dec bx
jnz next;不满10次,则中断返回
mov dx,21h
in al,dx
or al,00100000b
out dx,al;满10次,则禁止掉IR5中断
mov ds,csreg
mov dx,ipreg
mov dx,250dh
int 21h;恢复原来中断向量
sti
mov ax,4c00h
int 21h
next: pop ds
iret
code ends
end start
编程语言汇编语言
3、在8086/8088CPU寄存器组中,数据寄存器主要是指
( AX )、( BX )、( CX )、( DX )。
4、假设(DS)=3000H,(SI)=0040H,(30054H)=4336H,
则指令 SUB [SI+14H],0136H
执行后,(30054H)=( 4200H )。
5、结构化程序设计时,采用的基本结构有(顺序)、(分支)、(循环)。
7、设机器的字长是16,-3的补码和-129的补码分别为(FFFDH、FF7FH)。
8、8086/8088CPU对存储器地址采用分段管理方法,每段大小可达(64K)字节。
9、下面( )指令是错误的。
A、CMP 15,BX
10、DATA DW ‘1234’占用了( )个字节。--这是非法指令
11、汇编过程会把asm的汇编源程序汇编成( OBJ )格式的文件。
12、已知SP=2110H,执行POP AX后,SP寄存器的值是( 2112H )。
13、汇编程序的主要功能是什么?
把用助记符写的汇编语言指令,转换成 CPU 能够识别的机器码。
14、8086/8088CPU有哪些基本寻址方式?
立即、直接、寄存器、寄存器间接、寄存器相对 基址加变址、基址加变址相对。
15、8086/8088CPU主要有哪几类指令?
不同教材有不同的说法。
一般是:
传送、算术运算、位 *** 作(即逻辑运算)、串 *** 作、控制转移、处理器控制。
16、简述伪指令的作用。
伪指令用于控制汇编程序,指示它如何进行汇编。
17、汇编语言程序设计的一般步骤是什么?
根据要求,确定算法;
根据算法,编写程序;
编译、连接、运行;
排错,修改;
最后,完成。
18、简述循环程序的组成部分。
已知循环次数:
初始化次数计数器;
循环体;
次数减一,
次数判断,不为零就跳转去再次执行循环体。
--------
已知结束条件:
循环体;
判断退出循环的条件,不满足就跳转去再次执行循环体。
19、编写一个程序段实现通过端口21H采集一个8位数据,
并且把该数据传送给端口1200H。
IN AL, 21H
MOV DX, 1200H
OUT DX, AL
END
20、如(AX)=0012H,(BX)=0034H,试编写程序段
把它们装配在一起形成(AX)=1234H。
MOV AH, AL
MOV AL, BL
END
21、试编制一个程序把BX寄存器内的二进制数用十六进制数
的形式在屏幕上显示出来。
OUT_HEX PROC
MOV CX, 0404H
B1: ROL BX, CL
MOV DL, BL
AND DL, 0FH
CMP DL, 0AH
JB B2
ADD DL, 07H
B2: ADD DL, 30H
MOV AH, 2
INT 21H ;显示到屏幕
DEC CH
JNZ B1 ;处理4次
RET
OUT_HEX ENDP
以上就是关于testdx8000h是什么意思全部的内容,包括:testdx8000h是什么意思、几个关于汇编语言的问题 急用 谢谢、汇编语言 循环 分支 比大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)