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

article/2025/10/11 18:40:02

哈喽,大家好呀~这篇呢我们来看看汇编语言的几个入门小案例。

 🥇个人主页:个人主页                          

🥈系列专栏:日常解决的问题              

🥉与这篇汇编相关的文章:                  

IntelliJ IDEA 常用快捷键IntelliJ IDEA 常用快捷键(开发效率提升的是不只一点点惹)_一个名叫追的程序猿的博客-CSDN博客_idea循环快捷键
操作系统中几种最最最常见的调度算法操作系统中几种最最最常见的调度算法(适用于软件设计师考试与期末考试复习)_一个名叫追的程序猿的博客-CSDN博客
解决Oracle的状态: 失败 -测试失败解决Oracle的状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection_一个名叫追的程序猿的博客-CSDN博客_orcle测试失败

目录

一、开头介绍

二、案例实现

1、Hallo World

2、a + b / a - b

 3、循坏累加

4、进制转换器

 5、红绿灯

三、总结


一、开头介绍

首先啥是汇编语言?

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

二、案例实现

1、Hallo World

看到这 “哈喽我的” 是不是很熟悉?没错我们学的大多数语言第一个接触到的几乎都是 Hallo World,下面我们来看看代码是如何实现的。(这里我们用的编译工具是 VsCode,插件是MASM/TASM,或者编译工具是 emu8086)

org 100hmov ax, 3 
int 10h      
mov ax, 1003h
mov bx, 0
int 10hmov     ax, 0b800h
mov     ds, axmov [02h], 'H'
mov [04h], 'e'
mov [06h], 'l'
mov [08h], 'l'
mov [0ah], 'o'
mov [0ch], ','
mov [0eh], 'W'
mov [10h], 'o'
mov [12h], 'r'
mov [14h], 'l'
mov [16h], 'd'
mov [18h], '!'
mov cx, 12  
mov di, 03h c:  mov [di], 11101100b   add di, 2 loop c
mov ah, 0
int 16hret

我们来看下效果

2、a + b / a - b

这里举一个 5 + 10 - 1 的一个例子。

org 100hmov al, 5
mov bl, 10     add bl, alsub bl, 1mov cx, 8
print: mov ah, 2   mov dl, '0'test bl, 10000000b  jz zeromov dl, '1'
zero:  int 21hshl bl, 1
loop printmov dl, 'b'
int 21hmov ah, 0
int 16hret

我们看下输出,14 的二进制是 00001110h

 3、循坏累加

这里我们来一个从1 + 2 + 3 + …… + 98 + 99 + 100 的一个样例。

;课堂作业
;计算1+2+...+100
DATA SEGMENTCOUNT DW 0  ;计数
DATA ENDS  STACK SEGMENT PARA STACKBUF DW 20H DUP (0)LEN EQU $-BUF
STACK ENDSCODESEG SEGMENT
ASSUME CS:CODESEG,SS:STACK,DS:DATA
START:MOV AX,STACKMOV SS,AXMOV SP,LENMOV AX,DATAMOV DS,AXMOV CX,64HMOV AX,0
S:ADD COUNT,01HADD AX,COUNTLOOP SMOV DL,ALMOV AL,AHCALL DISP_2_HEXMOV AL,DLCALL DISP_2_HEXCALL DISP_CREFMOV AH,4CHINT 21HDISP_2_HEX:PUSH AXPUSH BXPUSHFMOV AH,0 MOV BL,10H DIV BLCALL DISP_1_HEXMOV AL,AHCALL DISP_1_HEXPOPFPOP BXPOP AX
RETDISP_1_HEX: PUSH AXPUSH DXPUSHFMOV DL,ALCMP DL,09JBE L_1 ADD DL,27H L_1: ADD DL,30H MOV AH,02HINT 21HPOPFPOP DXPOP AX 
RETDISP_CREF: PUSH DXPUSH AXMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HPOP AXPOP DX
RETCODESEG ENDS
END START

4、进制转换器

这里我们来看下如何实现十进制转换十六进制 

#start=simple.exe##make_bin#name "simple"mov al, 0A7h
out 110, almov ax, 1234h
out 112, axmov ax, 0in al, 110in ax, 112hlt

我们来看下效果

 5、红绿灯

我们先来看看效果图。

 我们在来看看代码

#start=Traffic_Lights.exe#name "traffic"mov ax, all_red
out 4, axmov si, offset situationnext:
mov ax, [si]
out 4, axmov     cx, 4Ch  
mov     dx, 4B40h
mov     ah, 86h
int     15hadd si, 2
cmp si, sit_end
jb  next
mov si, offset situation
jmp nextsituation        dw      0000_0011_0000_1100b
s1               dw      0000_0110_1001_1010b
s2               dw      0000_1000_0110_0001b
s3               dw      0000_1000_0110_0001b
s4               dw      0000_0100_1101_0011b
sit_end = $all_red          equ     0000_0010_0100_1001b

三、总结

1、汇编语言可以理解为符号化的机器语言。

2、我们使用 MASM/TASM 插件时,记得在插件的扩展设置里面设置好它的 Assember、Emulator、Mode。不然的话会很折磨。

(求关注)持续更新中……


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

相关文章

什么是汇编语言

汇编语言(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的内容…

第一章 汇编语言和汇编指令

【用最少的指令来实现功能】 自用 文章基于《计算机体系结构新讲》&#xff08;中国地质大学出版社&#xff09; 目录 一、汇编指令 &#xff08;1&#xff09;MIPS汇编指令示例解析 &#xff08;2&#xff09;MIPS指令集 二、汇编指令中的操作数 &#xff08;1&#xff0…

pic单片机汇编 c语言,PIC单片机汇编语言指令详解

PIC单片机汇编语言指令详解 pic单片机为最常用单片机之一&#xff0c;许多程序均基于pic单片机进行开发。因此&#xff0c;熟练pic单片机编程尤为重要。为保证大家能准确、熟练掌握pic单片机的使用&#xff0c;本文特带来pic单片机的各种汇编语言指令的讲解。 一、pic的指令系统…

汇编:汇编指令分类

文章目录 一、指令分类二、伪指令1、assume2、segment、ends3、end 三、汇编指令1、退出程序指令2、中断2.1、概念2.2、中断的分类2.3、本质2.4、中断指令 3、call、ret 四、指令处理的数据长度 使用汇编语言编写一个完整的程序&#xff0c;步骤大致如下&#xff1a; 1、编写源…

汇编语言指令及七种寻址方式指令实现

指令讲解 进入debug模式后&#xff1a;&#xff08;进入debug模式之前的讲解 可以参考我的另一篇博文&#xff1a;masm5.0运行 -u::显示机器指令和汇编指令 -d:显示的具体数据 内存单元内容查看 -r:查看寄存器内容 -r&#xff1a;修改寄存器的内容 如修改ax寄存器的值为12…

微机原理之汇编语言指令集

汇编语言指令集 1.1 概述1.1.1 指令集体系结构、机器指令和符号指令1.1.2 符号指令的书写格式 1.2 操作数1.2.1 通用寄存器中的操作数1.2.2 段寄存器和指令指针寄存器1.2.3 标志寄存器 1.3 寻址方式1.3.1 立即寻址1.3.2 寄存器寻址1.3.3存储器操作数寻址1.3.3.1 直接寻址1.3.3.…

MIPS汇编语言指令

MIPS汇编语言指令 寄存器指令集指令格式R型指令I型指令J型指令 寄存器 寄存器在MIPS体系结构中有32个通用寄存器&#xff0c;在汇编程序中可以用编号表示&#xff0c;$0~31 &#xff0c; 也 可 以 用 名 称 表 示 &#xff0c; 如31&#xff0c;也可以用名称表示&#xff0c;如…

汇编常见指令

文章目录 常见的运算类汇编指令add指令sub指令mul乘法指令div除法指令inc&#xff08;自增&#xff09;&#xff08;即C语言&#xff09;dec&#xff08;自减&#xff09;&#xff08;即–&#xff09;push&#xff08;入栈&#xff09;pop&#xff08;出栈&#xff09;and&…

log4j的ConversionPattern

log4j的ConversionPattern参数的意义 http://lizhou.iteye.com/blog/939154 博客分类&#xff1a; java log4j 多线程 Apache Tomcat F# &#xff0d;X: X信息输出时左对齐 %p: 输出日志信息优先级&#xff0c;即DEBUG&#xff0c;INFO&#xff0c;WARN&#xff0c;ERROR&am…