汇编语言程序设计
汇编语言程序设计步骤: 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、 静态检查,上机调试 选用指令尽量字节少,使其执行速度快。易错处应重点查,如比较次数、转移条件等。 确信无错后方可上机调试。
顺序程序结构,分支或选择程序结构,循环程序结构,子程。
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。
扩展资料:
注意事项:
汇编指令不区分大小写,目的操作数是存结果的,原操作数是被操作的。
二进制数后跟b,十六进制数后跟h,十进制数不需特殊标记。
汇编源程序中,数据不能以字母开头,需要在前面加上0,如0a000h。
汇编源程序中:mov al,[0] 含义:(al)=0 (debug中此指令与下一指令意义相同)。
参考资料来源:百度百科-汇编语言程序
参考资料来源:百度百科-结构化程序设计
1.ADD BX,AX 或 ADD BL,AL ;类型配对
2.MOV AX,0A999H
3.MOV AX,0F8H
4.MOV AX,1234H 或 MOV AL,12H
5.MOV AX,[BX]
6.MOV DS,AX ;DS不能直接存立即数
7.ADD [BX],10 ;对
8.PUSH AX ;push不能直接push立即数
9.IN AL,DX
10.OUT 40H ,AL
11.MUL AL ;mul不能直接跟立即数
12.MOV [DI],AX ;mov不能两个都是内存
13.ADD DI,AX
14.MOV DS,AX ;CS不可以改
15.SUB 10[SI],AX ;si di 不可以同时出现
二.
SUB [BP], BX 寄存器间接寻址方式;30400H;
MOV [BX+DI], SI 基址变址寻址方式;10400H;
ADD ES:[SI], DI 寄存器相对寻址方式;20200H;
MOV 10[BX], DI 寄存器相对寻址方式;10100H;
MOV DS:[100H], BX 相对基址变址寻址方式;10100H
三.
3456H;5678H;1234H;5678H;
四.
1234H;2468H;0008H;1008H;0804H;0408H;0508H;0508H
五.
01H,31H,0FFH,00H,78H,56H,FFH,FFH,00H,24H,00H,0BH,00H,0BH,19H,09H,09H
(从左往右地址变大)
AX=3101H,BX=0023H
六.
1.
汇编语言:(AssemblyLanguage)是面向机器的程序设计语言。
汇编:把汇编语言翻译成机器语言的过程称为汇编。
汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。
2.
3.
单独cmpsb就是逐一比较8个位;加上rep,循环比较,还是比较这8位啊
4.
是指在计算机执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的时间处理程序。待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。
5.
宏和子程序都是为了简化源程序的编写,提高程序的可维护性,但是它们二者之间存在着以下本质的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过CALL指令来调用;
2、汇编程序对宏通过宏扩展来加入其定义体,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序代码在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化;
3、宏引用时,参数是通过“实参”替换“形参”的方式来实现传递的,参数形式灵活多样,而子程序调用时,参数是通过寄存器、堆栈或约定存储单元进行传递的;
4、宏引用语句扩展后,目标程序中就不再有宏引用语句,运行时,不会有额外的时间开销,而子程序的调用在目标程序中仍存在,子程序的调用和返回均需要时间。
总之,当程序片段不长,速度是关键因素时,可采用宏来简化源程序,但当程序片段较长,存储空间是关键因素时,可采用子程序的方法来简化源程序和目标程序。
七.
…………
100字数节--字数节?看不懂。
mov si,[buffer1]
mov di,[buffer2]
mov bx,[buffer3]
add di,100
mov cx,100
lop:
mov al,[si]
mov ah,[di]
add ah,al
mov [bx],ah
inc si
dec di
inc bx
loop lop
程序设计语言一般可分为三类
程序设计语言分成了三大类,分别是机器语言,汇编语言和高级语言。1,机器语言 机器语言,顾名思义就是机器认识的语言,即这类语言或者其构成的程序可以直接被机器所识别的语言。这类语言是无需翻译的,其优点是较为直接,但缺点也非常明显——难以被人类所理解和记忆。2,汇编语言 汇编语言是第二代...
汇编语言是一种什么程序设计语言
在编程语言被机器语言和汇编语言更新之后,人们发现了限制程序普及的关键因素——程序的可移植性。有必要设计一个可以独立于计算机硬件在不同机器上运行的程序。这样可以避免很多重复的编程过程,提高效率。同时,这种语言应该接近数学语言或人类自然语言。20世纪50年代,计算机还很匮乏的时候,第一个高级编程...
高级语言程序设计过程是什么
本教程操作环境:windows7系统、Dell G3电脑。高级语言程序设计过程是:问题分析,算法确定,代码设计。程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。
程序设计语言包括
程序设计语言包括低级语言和高级语言。程序设计语言,按照语言级别可以分为两大类:低级语言和高级语言。低级语言包括机器语言和汇编语言。低级语言依赖于特定的机器,其使用复杂、繁琐、费时、易出差错,因而程序编写也有一定的难度。机器语言是表示成二进制形式的机器基本指令集,或者是操作码经过符号化的...
汇编语言是一种什么程序设计语言?
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在...
程序设计语言在计算机系统中的地位和作用
程序设计语言在计算机系统中的地位和作用是核心和基础的。它们是人与计算机之间沟通的主要方式,负责将人类的思维转化为计算机可以执行的指令,从而实现各种功能和应用。首先,程序设计语言允许开发者将复杂的任务或问题分解为更容易管理的部分,然后通过特定的语法和规则将这些部分组合起来。例如,在开发一个...
什么是程序设计语言?
程序设计语言(programming language)是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成程序的各个记号之间的组合规则,...
计算机程序设计主要学什么
2.编程语言 掌握一种或多种编程语言是程序设计的核心要素。不同的编程语言有不同的特点和适用场景,学习如何正确地使用编程语言来实现算法和解决问题是非常重要的。3.软件工程 软件工程是指在计算机程序的开发过程中使用的一系列方法和技术。包括需求分析、系统设计、编码、测试、维护等各个阶段。学习软件...
高级程序设计语言有哪些
有很多。高级程序设计语言有:Fortran、Pascal、Cobol、C、C、Basic、Ada、Java、C#、Lisp、Haskell、ML、Scheme、Prolog、Smalltalk等等。高级程序设计语言的分类:命令式语言。这种语言的语义基础是模拟“数据存储\/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构的自然实现方式。其中产生操作的主要...
程序设计语言的优缺点是什么?
2、缺点:是用指令编程,而成千上万条指令很难记住,且一旦出错很难找出错误。不同型号的计算机,指令编码并不相同,因此,针对某一型计算机写的程序移植到另外一种计算机上后,运行结果未必正确,甚至有可能根本不能运行。二、汇编语言 1、优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率...
冉鸦四神:[答案] 汇编语言程序设计步骤:1、 分析问题,抽象出描述问题的数据模型 2、 确定问题的算法思想 3、 画出流程图或结构图 4、 分配存储器和工作单元(寄存器) 5、 逐条编写程序 6、 静态检查,上机调试 例:编程查找考生的最高分,假设所有考生分...
大通回族土族自治县19481192208: 简单介绍一下汇编语言程序设计 - ?
冉鸦四神: 汇编比较好的书有:王爽老师《汇编语言》,杨季文老师的《80X86汇编语言程序设计》.看汇编不看保护模式的程序设计的话,汇编也就白学了,所以保护模式非常重要.当然这也是汇编一些应用的基础,比如软件解密,驱动的编写.有了好...
大通回族土族自治县19481192208: 汇编语言程序设计 - ?
冉鸦四神: DEV C++下编译成功#include<stdio.h>#include<stdlib.h>#include<string.h> int zhuanhua(char num[]) { int j,i=0,sum=0; char *p,s[]="0123456789ABCDEF"; p=num; while(i<strlen(num)) { for(j=0;j<16;j++) { if(*p==s[j]) { sum=16*sum+j; p++; break; } }...
大通回族土族自治县19481192208: .汇编语言程序设计考题,一、判断题(5道小题,1、MASM汇编语言的注释用分号开始,无所谓英文分号、还是中文分号.(3分) 正确 错误 2、按照... - ?
冉鸦四神:[答案] 一、判断题(5道小题,共15分) 1、MASM汇编语言的注释用分号开始,无所谓英文分号、还是中文分号.(3分) 错误 2、按照MASM语法编程时,可以将SHL作为8086指令的标号.(3分) 错误 3、指令“mov ax,ds:[100h]”中,若DS...
大通回族土族自治县19481192208: 汇编语言程序设计与计算机原理的区别 - ?
冉鸦四神: 汇编语言程序设计这个课程重点讲述基于8086 8088CPU的汇编语言设计,偏重汇编软件的学习应用,由于汇编语言与硬件关系太密切,不得不带进计算机的硬件讲解,但重中之重还是软件; 计算机原理则是全方位的,硬件工作原理与软件工作原理兼顾,更全面些
大通回族土族自治县19481192208: 汇编语言程序设计 - ?
冉鸦四神: ; 本程序通过编译,运行正确Code Segment Assume CS:Code,DS:Coden equ 8Start: mov cx,n cmp cx,1 ;n>1? ja Next ;是,阶乘 mov ax,1 ;n<=1,n!=1 jmp Exit_ProcNext: ...
大通回族土族自治县19481192208: 汇编语言程序设计的一般步骤是什么? - ?
冉鸦四神: 汇编语言程序设计的基本步骤了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了.一个程序通常具有顺序、分支、循环和子程序4种结构形 式.顺序程序结构就是指完全按顺序逐条执行的...
大通回族土族自治县19481192208: 汇编语言程序设计题实现有符号数绝对值的加法运算设字节变量X和Y中存放的是16位有符号数,试编写程序实现|X|+|Y|结果送AL的计算 - ?
冉鸦四神:[答案] mov ax,x test ah,0xF0 //是否为负数 jnz nz: not ax nz: mov dx,ax mov ax,y test ah,0xF0 ;是否为负数 jnz nz: not ax nz: add ax,dx ;高16位在dx,低16位在ax 把结果送入al是不行的
大通回族土族自治县19481192208: 汇编语言程序设计1?
冉鸦四神: 汇编就是按ASCII读数的,直接排序,输出时好像是用int 9输出字符,汇编好多年没用了,自己找相关的书看看吧