汇编语言程序编程

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-31
用汇编语言编写一个简单程序


汇编语言程序设计步骤: 1、 分析问题,抽象出描述问题的数据模型 2、 确定问题的算法思想 3、 画出流程图或结构图 4、 分配存储器和工作单元(寄存器) 5、 逐条编写程序 6、 静态检查,上机调试 例:编程查找考生的最高分,假设所有考生分数已存入计算机内存。 1、 分析问题 根据条件、特点、规律 →数学模型 本例分数已给定为0~200之间的整数集合(考虑加试分) ,记为{S},找max{S}(注: 简单问题不一定写数学模型) 。 2、 确定算法思想 最好利用现成算法和程序设计方法,若无,则需根据实践经验总结算法思想。如本例, 从成绩单第一分数往下看,边看边比较,记住较高分,舍弃较低分,直至看完,最高分存于 脑中。归纳算法思想:建立数据指针并指向数据区首地址。将第一数取入寄存器(如AL) , 与下一数比较,若下一数大则将其取入寄存器,否则调整指针,再与下一数比较,重复上述 过程,直至比较完毕,寄存器中即最高分。 读分数用MOV指令,比较用CMP指令,分析判断用条件转移指令。 3、 画流程图或结构图 有逻辑流程、算法流程、程序流程等,复杂问题需画模块结构。本例简单,只画出程序 流程图(用模块化结构的N-S流程图表示) : 本例的N-S流程图 图中初始化包括:设一个计数器,将分数个数减一后送计数器,每比较一次减一,至 零查找结束;建立一个指针指向数据区。 开始 初始化 取第一数到寄存器 与下一数比较 下一数大? 是 否 取大数到寄存器 修改指针,计数次数减一 返回到循环体开始,直到计数次数为0退出循环 结束 4、 分配存储器空间和工作单元(寄存器) 定义数据段、堆栈段、代码段等。工作单元一般用寄存器。本例:分数放数据段,建100 字节堆栈空间,BX作数据指针,CX作计数器,AL放最高分。 5、 逐条编写程序 DATA SEGMENT FEN DB 85,90,60,75,87,35,80,78,96,82…… ;存分数 MAX DB ? ;存最高分 DATA ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 100 DUP(?) ;100字节堆栈 STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START PROC FAR PUSH DS MOV AX,0 PUSH AX ;为了返回DOS MOV AX,DATA MOV DS,AX ;置数据段寄存器 MOV BX,OFFSET FEN ;置数据指针 MOV CX,MAX-FEN ;置计数器初值 DEC CX ;N个分数比较N-1次 MOV AL,[BX] ;取第一个分数 LOP: INC BX ;调整指针 CMP AL,[BX] ;与下一数比较 JAE NEXT ;大于等于则转 MOV AL,[BX] ;否则取下一数 NEXT: LOOP LOP ;计数器减一, ;不为零转LOP MOV MAX,AL ;存放最高分 RET ;返回DOS START ENDP CODE ENDS END START 6、 静态检查,上机调试 选用指令尽量字节少,使其执行速度快。易错处应重点查,如比较次数、转移条件等。 确信无错后方可上机调试。

我知道:
1)从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数取补后送回,要求程序框图和完整程序及每条指令的解释。
(直接从0398HI单取消,然后进入POUJN脚本,改485这个值就可以了)

2)已知数组A和数组B分别包含50和20个互不相等的带符号数(16位)编程将在A中但不在B中出现的数存入数组C中。要求同上。
(直接把A用C0998H这个值改为20和50之间)

3)在首地址为TABLE的数组中存放着200个16位带符号数,以补码表示,找出最大最小数,出现次数最多数及该数出现的次数,依次存放于以RESULT开始的单元内。要求同上。
(把RESUL用POUJN脚本改成TABLE,然后存取,不能出现2个偶数学,最后把00100这个函数给删除了)

以上就基本是这样了,看不懂没关系,关键是互相学习。

呵呵,大学时候对汇编语言很感兴趣,那时编程每一个小程序都很有成就感.现在工作了,荒废了.

不过建议你还是自己动脑子吧.自己作出来会很有成就感的,尤其是烧到机器里面以后.

最简单的方法,用c写一个然后反汇编看代码

当时读大学学汇编,成绩优秀,感觉挺自豪的,你帮我贴一个汇编源码我看看格式再说,好久不做都忘了。

什么的汇编80*86还是51,还是DSP的,说清楚些我可以解决.

  • 汇编语言程序设计步骤有那几步_汇编语言编程步骤有哪些
    答:1、分析问题,抽象出描述问题的数据模型 2、确定问题的算法思想 3、画出流程图或结构图 4、分配存储器和工作单元(寄存器)5、逐条编写程序 6、静态检查,上机调试例:编程查找考生的最高分,假设所有考生分数已存入计算机内存 1、分析问题根据条件、特点、规律→数学模型本例分数已给定为0~200之间的整...
  • 程序汇编有哪两种方式
    答:1、汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。2、采用汇编语言编写程序虽不如高级程序设计语言简...
  • 计算机程序设计语言分为哪几类
    答:计算机程序设计语言主要分为四类:机器语言、汇编语言、高级编程语言和自然语言。1. 机器语言 机器语言是计算机能直接识别的二进制代码。这些代码由0和1组成,代表了计算机最基本的指令。例如,一个简单的机器语言指令可能是“100101”,代表将存储在某个内存地址的数据加到中央处理器的寄存器中。
  • 汇编语言是一种什么程序设计语言
    答:汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程设备的低级语言,也称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。同时,因为资源的稀缺性,计算机运行的效率也成为那个时代工程师追求的目标。为了更高效地使用计算机,人们设计了高级...
  • 汇编语言程序是什么
    答:机器语言,是第一代计算机语言。 2. 汇编语言 为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序...
  • 汇编语言是一种什么程序设计语言?
    答:汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。...
  • 汇编语言可以被计算机直接执行吗
    答:汇编语言无法被计算机直接执行。汇编语言是一种低级语言,它是用助记符表示机器指令的编程语言。尽管它比机器语言更加易于理解和编写,但计算机硬件并不能直接执行汇编语言程序。计算机能理解的唯一语言是机器语言,这是一种由二进制代码(0和1)组成的语言。每条机器指令都是一串特定的二进制代码,它们告诉...
  • 程序语言分为哪三类
    答:有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。通常被应用在底层,硬件操作和高要求的程序优化的场合,驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。三、高级语言:高级语言(High-level programming language)相对于机器语言(machine language,是一种指令集的体系。这种指令集,称...
  • 汇编语言程序设计的一般步骤是什么?
    答:汇编语言程序设计的基本步骤 了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了。一个程序通常具有顺序、分支、循环和子程序4种结构形式。顺序程序结构就是指完全按顺序逐条执行的指令序列。在程序设计过程中,顺序结构大量存在,屡见不鲜。但一个完整的程序...
  • 汇编语言有什么用啊?
    答:为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令,这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令...