dos汇编总结

前言:

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

要点:

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

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

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

1.通用寄存器 ax,bx,cx(和loop绑定),dx
2. 输入输出寄存器:al (输入字符到的寄存器),dl输出字符到的寄存器
3. 指令寄存器:ah(用于输入指令的寄存器,如输入1为输入,2为输出,4ch为结束),

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一般连用。

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

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

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

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

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

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

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

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

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

输出A-Z 26个字母

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

猜你喜欢

转载自blog.csdn.net/faker1234546/article/details/132662012
DOS