**
微机原理实验 系列
**
前言
第一次写博客,小白一只,只是因为现在我正在上这门课,在网上找不到相关代码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
希望有帮助。