dos汇编总结

前言:

计组课本需要学习汇编,可惜自己看不太懂。这里发现一个学习方法交给大家。其实新手可能一些抽象表示难理解,这里我把我学习的疑问点以及思路记录一下。

要点:

这里我以题为例给大家分析

  1. 输出输入对应大写字母的小写字母

我们需要简单知道常用寄存器的作用。

1.通用寄存器 ax,bx,cx(和loop绑定),dx

  1. 输入输出寄存器:al (输入字符到的寄存器),dl输出字符到的寄存器

  2. 指令寄存器:ah(用于输入指令的寄存器,如输入1为输入,2为输出,4ch为结束),

dos 复制代码
START:
MOV AH,1
INT 21H

CMP AL,'A'
JL A1
CMP AL,'Z'
JG A1

ADD AL,32
MOV DL,AL
MOV AH,2
INT 21H
A1:
    ; 退出程序
    MOV AH, 4Ch       ; AH=4Ch 表示程序退出
    INT 21H           ; 调用 DOS 中断 21H 退出程序
  1. 首先我们需要输入字符,输入的字符默认在AL寄存器中

  2. 然后我们进行比较,如果输入的值小于A的对应Ascii值或者大于z的值就跳转到结束标志位。

  3. COP 接两个数,后面接比较调节,可以实现条件转移,就是c语言中的if语句。

  4. A1是自定义的标志位,相当于c语言中的函数。这里我定义了一个退出程序的语句。

  5. int21,中断信号,相当于执行操作的必要流程。

  6. Ah寄存器的作用,存入1代表输入,存入2代表输出。这个相当于一个调用系统功能的寄存器,和 INT 21一般连用。

  7. 为什么汇编数字后要加h?

在汇编语言中,添加 "h" 后缀通常用于表示一个十六进制数。在汇编语言中,常用的数值表示法包括:

十进制表示法:例如,10 表示十进制整数。

十六进制表示法:在数值后面添加 "h" 后缀,例如,10h 表示十六进制整数,相当于十进制的16。

二进制表示法:在数值前面添加 "0b" 或 "0B" 前缀,例如,0b101 表示二进制整数,相当于十进制的5。

八进制表示法:在数值前面添加 "0" 前缀,例如,010 表示八进制整数,相当于十进制的8。

在汇编语言中,加上 "h"

后缀可以帮助编程人员清楚地知道一个值是以十六进制表示的,而不是十进制或其他进制。这种表示法的使用可以提高代码的可读性,特别是在处理内存地址、寄存器值和其他底层硬件相关的数值时。在大多数汇编语言中,编译器或汇编器可以根据上下文来确定数值的进制,但明确指定进制可以减少歧义。

例如,10h 表示一个十六进制数,而 10 可能表示一个十进制数。这种约定有助于程序员正确理解和处理数据。

那么基础知识知道了,可以写一个变体题

输出A-Z 26个字母

bash 复制代码
START:
    ; 初始化循环计数器 CX
    mov cx, 26
    mov dl,'A'

loop_start:
    ; 在这里放置循环体的代码
    
    ;输出字符
    int 21h
    ;加1
    add dl,1

    ; 递减循环计数器 CX
    loop loop_start

    ; 循环结束

    ; 退出程序
    mov ah, 4Ch
    int 21h
相关推荐
pigfu1 天前
go 通过汇编学习atomic原子操作原理
汇编·golang·atomic·缓存行·lock指令
小鹿撞出了脑震荡2 天前
汇编学习——iOS开发对arm64汇编的初步了解
汇编·学习·ios
染指11103 天前
21.第二阶段x64游戏实战-分析采集物偏移
汇编·游戏·反游戏外挂·游戏逆向·x64dbg·x64游戏
楠木s6 天前
常见汇编代码及其指定
java·汇编·数据库·安全·网络攻击模型·二进制·栈溢出
suyong_yq9 天前
调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
汇编·arm开发·嵌入式系统
染指111012 天前
18.第二阶段x64游戏实战-MFC列表框
汇编·c++·windows·游戏·游戏逆向·x64dbg
RaLi和夕15 天前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习
yu41062115 天前
GCC 内建函数汇编展开详解
汇编
手打猪大屁19 天前
ARM裸机开发——I.MX6U_汇编LED灯驱动
汇编·arm开发
zhmc20 天前
Keil A51汇编伪指令
汇编