NIMITIZ 发表于 2021-5-8 22:09

8086汇编语言程序设计简要记录(一)

刚来吾爱破解,小小白一枚,分享一些微机原理课上自己写的8086汇编源码给和我一样的小小白,一起学习

一个涉及到程序循环和分支选择的简单程序来练练手(/ω\)。

将数据0FFH、02H、0FCBH、03H、1000H、0F3H中大于或等于0FFH的数存入以偏移地址100H为起始的内存中,小于0FFH的数存入以偏移地址200H为起始的内存中。


源码如下:
DATA SEGMENT
    NUM DW 0FFH,02H,0FCBH,03H,1000H,0F3H
    ORG 100H      ;自定义的内存空间的偏移地址起始,下同
    M DW 6 DUP(?)       ;定义一段字长为6的内存空间用于存储数值比0FFH大的数
    ORG 200H
    N DW 6 DUP(?)       ;定义一段字长为6的内存空间用于存储数值比0FFH小的数
DATA ENDS

CODE SEGMENT

    ASSUME CS:CODE,DS:DATA
   
    START:
    MOV AX,DATA
    MOV DS,AX
    MOV CX,6      ;循环执行的次数,每执行完一次循环,CX的值减1,直至CX的值变为0才退出循环
    MOV SI,0
    MOV DI,0
    MOV BP,0

    L:
    MOV BX,NUM
    MOV DX,0FFH
    CMP BX,DX       ;比较存储在BX和DX中的数的大小
    JNC L1      ;若BX中的数大于DX中的数,则直接执行L1处的指令;若BX中的数小于DX中的数,则继续顺序执行往下的指令
    MOV DX,BX       ;将小于0FFH的数(即BX中的数)送入DX,DX中原有的数0FFH将被覆写
    MOV N,DX      ;将DX中的数写入内存
    INC DI      ;偏移地址加2,下同
    INC DI
    INC SI
    INC SI
    JMP L2      ;跳转至标记L2,否则将继续往下执行L1处的指令,造成程序逻辑错误

    L1:   ;当L1处的指令执行完毕后,继续往下执行L2处的指令
    MOV M,BX      ;将大于0FFH的数写入内存
    INC BP
    INC BP
    INC SI
    INC SI

    L2:
    LOOP L      ;返回标记L以此循环执行,直至CX的值变为0

    MOV AH,4CH
    INT 21H

CODE ENDS

END START
页: [1]
查看完整版本: 8086汇编语言程序设计简要记录(一)