汇编入门(一)

article/2025/10/11 17:34:45

汇编入门(一)

1.第一个汇编程序

目前利用的是keil软件,建立文件时扩展名一定要为asm
在这里插入图片描述
在这里插入图片描述
如何查看具体地址存储器中的值:
在工具栏上选择“VIEW”>“memory windows”>“memory1”
然后输入地址即可:
在这里插入图片描述
在这里插入图片描述
注意这里第一行第一列为0x1B,则右边下一个是0x1C

第一个汇编程序:

ORG 0000H        ;伪指令,定义下面的指令所在地址,此句为主程序的开始地址
LJMP MAIN        ;无条件转移到MAIN
MAIN:            ;主程序MOV 30H,#40H ;30H的内容为40HMOV 40H,#10H ;40H的内容为10HMOV R0,#30H  ;R0的内容为30HMOV A,@R0    ;A的内容为40HMOV R1,AMOV B,@R1SJMP $       ;转到该指令的开头开始执行END              ;程序结束

汇编程序练习:
1.A中的压缩BCD码分为二个字节,形成非压缩BCD码,放入40H和41H单元中

	MOV R0,AANL A,#00001111B   ;ANL:与运算MOV 40H,AMOV A,R0     ;取回原数据ANL A,#11110000BSWAP A       ;将A中高四位与低四位交换MOV 41H,A

2.有两个4位BCD码,分别存放在内部数据存储器的50H~51H单元和60H~61H单元中
;试编写求这两数之和的程序,结果存放到 40H~41H 单元中

MOV A,50H	  ;A←(50H)
ADD A,60H	  ;低两位相加,A←(A)+(60H) 
DA A		  ;进行 BCD 码修正 ,DA A 指令为十进制调整指令
MOV 40H,A	  ;将修正后的低两位结果送 40H 
MOV A,51H	  ;A←(51H) 
ADDC A,61H	  ;高两位带上低位的进位位相加,A←(A)+(61H)+CY 
DA A		  ;进行 BCD 码修正 
MOV 41H,A	  ;将修正后的高两位结果送 41H

3.;内部数据 RAM 中 20H~3FH 单元的内容传送到,外部数据存储以 2000H 开始的连续单元中去。
20H~3FH 共计32个单元,需传送32次数据。R1作为循环计数器。

MOV  R0,#20H       ;设置R0为内部RAM首地址 
MOV  DPTR,#2000H   ;设置外部RAM首地址 
MOV  R1,#32        ;设R1为计数器 
LOOP:MOV A,@R0          ;取内部RAM数 MOVX @DPTR,A       ;送外部 RAM INC  R0            ;调整内部RAM指针,指向下一个数据 INC  DPTR          ;调整外部RAM指针 DJNZ R1,LOOP       ;未完继续    
SJMP  $                ; 停机 

4.将片外RAM空间2000H~200AH中的数据的高4位变零,低4位不变,原址存放

	MOV DPTR,#2000H     ;数据指针DPTR存开始地址MOV R1,#0BH         ;B=11,一共是0到A:12个数据LOOP: MOVX A,@ DPTR ;循环指令ANL A,#0FH    ;与运算,高四位清0,低四位不变MOVX @ DPTR,A ;题目要求原址存放INC DPTR      ;DPTR加一DJNZ R1,LOOP  ;R1减一,若此时R1不为0,则跳转至LOOPSJMP $	 

5.内部数据RAM中40H~49H中的10个无符号数逐一比较,从小到大的顺序依次排列在这片单元中。

START:  CLR F0         ;清除交换标志位F0 MOV  R3,#9     ;十个数据循环次数         MOV  R0,#40H   ; R0存放区首址         MOV  A,@R0     ; 取前数 L2:     INC  R0        ;R0加1 MOV R2,A       ;保存前数         SUBB A,@R0     ;前数减后数,如果是小数减大数,进位C会被置1        MOV A,R2       ;恢复前数         JC L1          ;顺序则继续比较.如果进位为1则转到L1        SETB F0        ;逆序则建立标志位         XCH A,@R0      ;前数与后数交换         DEC R0         ;R0减1,指向前数单元         XCH A,@R0         INC R0         ;仍指向后数单元 L1:     MOV A,@R0      ;取下一个数         DJNZ R3,L2     ;依次重复比较,R3减1,不为0 则转移到L2         JB F0,START    ;交换后重新比较,如果F0为1 则转移到START         RET            ;从子程序返回END

http://chatgpt.dhexx.cn/article/A6nC9gXO.shtml

相关文章

汇编语言入门--调试工具debug的使用(史上最全,11种常见命令)

汇编语言入门–调试工具debug的使用(史上最全,11种常见命令) 1.直接启动debug程序 详见:https://bingshuai.blog.csdn.net/article/details/119978461 2.检查和修改寄存器内容命令R 检查 -r 修改 这里用AX来举例: -…

汇编语言入门(二)

汇编语言入门(一) 文章目录 寄存器【内存访问】内存中字的存储DS和【address】字的传送mov、add、sub指令数据段栈栈顶越界的问题PUSH和POP指令栈的综述栈段【栈的综述】 寄存器【内存访问】 内存中字的存储 4E20是两个字节构成一个字。 上图中0地址单…

汇编语言学习入门+亲自实操+图形并茂

汇编器 汇编器是将汇编语言转化为机器码的程序。或许你会以为汇编转化到机器码没什么大不了的,毕竟几乎是一对一的转换。但nasm存在的意义在于它可以很好的适应多种处理器平台,让编写汇编这件事都变得可移植了。nasm可以在Ubuntu下汇编,使用…

ARM 汇编语言入门

[翻译]二进制漏洞利用(二)ARM32位汇编下的TCP Bind shell:https://bbs.pediy.com/thread-253511.htm ARM汇编语言入门 From:ARM汇编语言入门(一):https://zhuanlan.zhihu.com/p/109057983 原文地址:https://azeria-labs.com/writi…

基础汇编语言编程

目录 什么是汇编语言? 工程搭建 新建工程 环境设置 测试是否成功 正式学习汇编语言 数据处理指令 填充,加,减,乘 思考:我们可以看到R0寄存器可以存放8位十六进制数,那么0x12345678能不能用mov存入&am…

汇编入门学习

学自狂神:最通俗易懂的计算机底层教学,二进制到汇编学习! 1、概述 学习路线: 语言 进制 进制如何运算 二进制 数据宽度 有符号数和无符号数 原码反码补码 位运算 位运算计算 汇编 寄存器 内存 汇编指令 内存复制 …

【学习笔记】汇编语言入门

汇编语言入门 概述 指令格式(最多包含4个区段):各区段之间用规定的分隔符分开 [标号:] 操作码 [操作数] [;注释]标号区段(当前指令行的符号地址)操作码区段(指令的操作行为,由操作…

关于汇编语言入门的几个案例

哈喽,大家好呀~这篇呢我们来看看汇编语言的几个入门小案例。 🥇个人主页:个人主页 🥈系列专栏:日常解决的问题 🥉与这篇汇编相关的文章: …

什么是汇编语言

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号&#…

汇编语言系列教程之基础入门 (一)

汇编语言系列教程之基础入门 (一) http://www.cnblogs.com/flyor/p/7208948.html 机器字长 机器字长是指CPU一次运算所能处理的数据的位数,一般来说这个数的和CPU的通用寄存器长度、数据总线的宽度等相等,在8086中为16bit。由于历…

快速入门汇编语言

这篇是我在先后学习了《汇编原理》、《CSAPP》第三章和《x86 data sheet》,以及经历了大量google后写出的总结性文档,用于自查和复习。若能有所助益,不胜荣幸。如有错漏,烦请不吝赐教。 1. 从C到汇编 在初学C语言时,…

汇编语言(一)

一、编程语言 1)机器语言 机器语言是机器指令的集合。在计算机中是一串0、1二进制数,计算机转变为高低电平,器件受到震动,进行运算。由于硬件设计和内部结构的不同,需要不同的电平脉冲来控制使它工作,所以…

汇编语言程序设计入门

前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书 汇编语言程序设计 一,汇编语言程序设计概述1,程序设计语言2,汇编语言源程序3,汇编语言程序开发过程 二,汇编语言基本语…

手把手教你学习汇编语言——从入门到起飞

专接本交流群:1051749714 (有什么问题欢迎进群讨论) 关于这篇博客,笔者会尽量用最简单的方式教会大家汇编语言以便应付各种考试 有什么不足的忘大佬评论或私信指出。 汇编环境安装 汇编运行调试 汇编指令 希望大家看完这些找一些…

小白的入门之——汇编语言程序设计教程

目录 第一章 基础知识 1.1汇编语言的特点 1.2计算机中数据表示的特点 【BCD码表示法(Binary Coded Decimal)】 【定点数】 —原码表示法— —反码表示法— —补码表示法— 浮点数 1.3 ​​​​​​计算机的数据存储 寄存器 存储器 数据在主…

汇编入门基础

1.什么是汇编语言? 汇编语言就是低级语言,直接描述/控制 CPU 的运行,我们知道,CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来&…

汇编语言入门教程

一、汇编语言是什么 ​ 汇编语言是二进制指令(操作码)的文本形式,与指令是一一对应的关系。比如加法指令00000011写成汇编语言就是ADD 二、前置知识——寄存器 ​ 1、寄存器不依靠地址区分,而依靠名称,CPU通过名字去…

南邮《汇编语言程序设计》期末复习 CH3: 汇编语言指令集

本文转载自厉害的 孔姐姐 的 博客 。 由一只孔姐姐的小迷弟负责排版和整理~ 一、基本概念 1.指令:单个的 CPU 操作,通知 CPU 执行某种操作的 “命令” 指令集:所有指令的集合 机器指令:用二进制序列(0、1&#xff09…

汇编语言程序格式

1 逻辑段 汇编语言源程序由一个或多个逻辑段组成。 ❖ 一个程序中可以有几个同一类型的逻辑段。 ❖ 必须至少有一个代码段。 [注]源程序分段的目的在于程序结构清晰、便 于内存分配,寻址方便,一个源程序需要设置 几个段应根据具体…

汇编常用指令

通用寄存器及使用 IA-32系列有8个32位通用寄存器&#xff0c;名称分别为&#xff1a;EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI&#xff0c;如图&#xff1a; 简单传送指令 指令中文名格式解释备注MOV传送指令MOV DEST,SRCDEST<SRCXCHG交换指令XCHG OPER1,OPER2把操作数oper1的内容…