欢迎使用CSDN-markdown编辑器

**

微机原理实验 系列

**
前言
第一次写博客,小白一只,只是因为现在我正在上这门课,在网上找不到相关代码QAQ,于是只好自己在实验室慢慢啃,不过收获真心很多,而且自己确实觉得理解地更透彻了,于是想分享一下自己的代码~~PS:估计只有选了这门课的同学才能知道我在说什么Orz,其实就是DOS下汇编。

参考的微机实验书是北大内部教材。

                  实验一  汇编语言和DOS系统

(一)汇编语言的编译与调试
代码就在书上(以后的几个实验都会有样例代码,在此就不赘述了)

(二)键盘输入和屏幕输出处理
这个代码较为简单,熟悉一下DOS下的系统调用就好了~

DATA SEGMENT
        ADDER DW 0
DATA ENDS

STACK SEGMENT
        DW 128H DUP(0)
STACK ENDS

CODE SEGMENT
        ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
        MOV AX,DATA
        MOV DS,AX
        MOV ES,AX
        CALL IN_NUM
        MOV AL,ADDER
        MOV ADDER,0
        CALL IN_NUM
        MOV CL,ADDER
        ADD AL,CL
        DAA
        MOV BL,AL
       ; PUSH AL
        JNC NEXT
        MOV DL,'1'
        MOV AH,02H
        INT 21H
       ; POP AL
NEXT:   ;MOV BL,0
        ;MOV BL,AL
        MOV AL,BL
        MOV CL,4  
        SHR AL,CL
        ADD AL,'0'
        MOV DL,AL
        MOV AH,02H
        INT 21H
        AND BL,0FH
        ADD BL,'0'
        MOV DL,BL
        MOV AH,02H
        INT 21H
        MOV AX,4C00H
        INT 21H

IN_NUM PROC NEAR
        PUSH AX
        PUSH CX
RE_IN:  MOV AH,01H
        INT 21H
        CMP AL,0DH
        JZ EX_IN
        SUB AL,'0'
        JL RE_IN
        CMP AL,9
        JG RE_IN
        MOV AH,ADDER
        MOV CL,4
        SHL AH,CL
        ADD AH,AL
        MOV ADDER,AH
        JMP RE_IN
EX_IN:  POP CX
        POP AX
        RET
IN_NUM ENDP

CODE ENDS
END START

希望有帮助。

你可能感兴趣的:(汇编,dos)