我是靠谱客的博主 危机朋友,最近开发中收集的这篇文章主要介绍汇编基础学习和一些基本总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DOS系统功能调用常见表:

AH    功能                调用参数             返回参数

01    待回显的键盘输入                         AL=输入字符

02    输入一个字符        AL=带输入的ASCII值    

09    字符串输出          DS:DX=字符串首

汇编语句解析

ONE DB 5 DUP(1): 表示定义5个byte,每个byte为1,共5个字节(相当于给ONE变量分配5个字节的储存单元,实际上是在缓冲区)

THREE DW 5 DUP(1): 表示定义5个word,每个word为1,共5word即10个字节(相当与给THREE变量分配10个储存单元)

LOOP  NEXT:CX <--CX-1; 若CX不等于0,执行NEXT,也就是循环进行

DB 100 DUP(?): 表示在系统中抽出100个字节的储存单位,供程序使用

 

输出字符串”hello World”

DATA  SEGMENT

     STRING  DB  'Hello World!$'

DATA  ENDS

 

CODE  SEGMENT

     ASSUME    CS:CODES,DS:DATAS

START:

     MOV  AX,DATA

     MOV  DS,AX

     LEA  DX,STRING

     MOV  AH,9

     INT  21H

  

     MOV  AH,4CH

     INT  21H

CODE  ENDS

    END   START

求两个数的和

DATA  SEGMENT

    FIVE  DB    5

DATA  ENDS

 

STACK  SEGMENT

      DB  128 DUP (?

STACK  ENDS

 

CODE  SEGMENT

     ASSUME    CS:CODES,DS:DATAS,SS:STACKS

START:

    MOV AX,DATA

    MOV DS,AX

    MOV AL,FIVE

    ADD AL,3

    ADD AL,30H    // 要将十进制数转换长ASCII的数才能显示在屏幕上

    MOV DL,AL

    MOV AH,2

    INT 21H

   

    MOV AH,4CH

    INT 21H

CODE  ENDS

END  START

俩个数的比较实验

DATA  SEGMENT

      X DB 01H

      Y DB 01H

      STR1  DB 'X > Y$'

      STR2  DB 'X < Y$'

      STR3  DB 'X = Y$'

DATA  ENDS

CODE  SEGMENT

      ASSUME DS:DATA, CS:CODE

START: MOV DX, DATA

      MOV DS, DX

      MOV AL, X

      CMP AL, Y

      JA  TAG1

      CMP AL, Y

      JB  TAG2

      JMP TAG3

TAG1: LEA DX, STR1

      MOV AH, 09H

      INT 21H

      JMP EXIT

TAG2: LEA DX, STR2

      MOV AH, 09H

      INT 21H

      JMP EXIT

TAG3: LEA DX, STR3

      MOV AH, 09H

      INT 21H

      JMP EXIT

EXIT: MOV AH, 4CH

      INT 21H

CODE  ENDS

      END START

 

求1+2+3……+100的和

DATA SEGMENT

      RESULT DB 4 DUP(?) ;给首地址为RESULT的变量分配4个储存空间

      ;相当于C语言中的 char RESULT[4];

DATA ENDS

 

STACK SEGMENT STACK

      DB 100 DUP(?)

STACK ENDS

 

CODE SEGMENT

 ASSUME DS:DATA,SS:STACK,CS:CODE

 START:

 MOV AX,DATA

 MOV DS,AX

 

 MOV CX,100 ; 100为循环次数

 MOV AX,0   ; 给累加器清零

 NEXT:

 ADD AX,CX

 LOOP NEXT

 

 MOV DX,0

 MOV BX,0AH

 DIV BX ; BX为字数据型的,所以AX/BX的商放在AX下,余数放在DX里

 ; 若 BX 是字节型的,则商放在AH中,余数放在AL下

 ADD DL,30H

 MOV RESULT[3],DL

 

 MOV DX,0

 DIV BX

 ADD DL,30H

 MOV RESULT[2],DL

 

 MOV DX,0

 DIV BX

 ADD DL,30H

 MOV RESULT[1],DL

 

 ADD AL,30H

 MOV RESULT[0],AL

 MOV AH,09H

 LEA DX,RESULT

 

 INT 21H

 MOV AH,4CH

 INT 21H

 CODE ENDS

 END START

 

 

 

 

 

最后

以上就是危机朋友为你收集整理的汇编基础学习和一些基本总结的全部内容,希望文章能够帮你解决汇编基础学习和一些基本总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部