当前位置:文档之家› 微机原理实验代码

微机原理实验代码

在数据段中定义变量X 、Y 、Z 、RESULT ,计算X+Y-Z,结果存入数据段中的单元中。

其中X 、Y 、Z 均为32位带符号数。

DATAS SEGMENT ;数据段
;请在这里定义您的数据
X DD 33331111H
Y DD 44442222H
Z DD 55557777H
RESULT DD ?
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
MOV AX,WORD PTR X[0]
MOV BX,WORD PTR X[2]
MOV CX,WORD PTR Y[0]
MOV DX,WORD PTR Y[2]
ADD AX,CX
ADC BX,DX
MOV CX,WORD PTR Z[0]
MOV DX,WORD PTR Z[2]
SUB AX,CX
SBB BX,DX
MOV WORD PTR RESULT[0],AX
MOV WORD PTR RESULT[2],BX
;MOV ;退出程序
INT 21H
CODES ENDS
END START
1.编写程序完成下列算式:
DATAS SEGMENT ;数据段
;请在这里定义您的数据
X DB 10
Y DB ?
DATAS ENDS
CODES SEGMENT ;代码段 Y=
10 X>0
0 X=0 -10 X<0
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
CMP X,0
JL NEXT1
JZ NEXT2
MOV Y,10
JMP COM
NEXT1:
MOV Y,-10
JMP COM
NEXT2:
MOV Y,0
COM:
CODES ENDS
END START
2.在数据段定义无符号变量X、Y和MAX,编程将X和Y中的最大数存入MAX DATAS SEGMENT ;数据段
;请在这里定义您的数据
X DB 30
Y DB 20
MAX DB ?
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
MOV AL,X
CMP AL,Y
JB NEXT1
JZ NEXT2
MOV BL,X
MOV MAX,BL
JMP COM
NEXT1: MOV CL,Y
MOV MAX,CL
JMP COM
NEXT2: MOV DL,X
MOV MAX,DL
COM:
CODES ENDS
END START
假设一个变量中存储的是一个带符号数的原码,编程求其补码。

DATAS SEGMENT ;数据段
;请在这里定义您的数据
X DB 10001010B
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
CMP X,0
JL NEXT1
JMP COM
NEXT1: NOT X
OR X,80H
ADD X,1
COM:
CODES ENDS
END START
1.统计BX寄存器中二进制1的个数。

DATAS SEGMENT ;数据段
;请在这里定义您的数据
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
MOV BX,1111101010110101B
MOV CX,16
MOV AL,0
AGAIN: ROR BX,1
JNC LP
ADD AL,1
LP: LOOP AGAIN
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
2.定义10个字型带符号数,求其最大值并存于max单元中。

DATAS SEGMENT ;数据段
;请在这里定义您的数据
BUFDW
1B32H,4F07H,2137H,25F9H,25E6H,98F5H,87FFH,25DCH,2735H,15ABH MAX DW ?
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
LEA SI,BUF
MOV CX,10
MOV AX,[SI]
INC SI
INC SI
DEC CX
AGAIN: CMP AX,[SI]
JGE NEXT
MOV AX,[SI]
NEXT: INC SI
INC SI
LOOP AGAIN
MOV MAX,AX
1.将BX中的十六进制数转换成4个ASCII码数据代码转换部分用子程序实现。

DATAS SEGMENT ;数据段
;请在这里定义您的数据
RESULT DB 4 DUP(?)
DATAS ENDS
CODES SEGMENT ;代码段
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
LEA SI,RESULT
MOV CX,0404H
MOV BX,0F7DCH
AGAIN: ROL BX,CL
MOV AL,BL
AND AL,0FH
CALL ASC
INC SI
DEC CH
JNZ AGAIN
ASC PROC
ADD AL,30H
CMP AL,39H
JBE COM
ADD AL,7H
COM: RET
ASC ENDP
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
2.从键盘接收4位十进制数,将其转换为十六进制数并显示。

注:转换结果存放在BX中。

CODE SEGMENT
ASSUME CS:CODE
START:
MOV CX,4
NEWCHAR: MOV AH, 1 ;键盘输入
INT 21H
SUB AL, 30H
JL NEWCHAR ; <0重输
CMP AL, 9
JG NEWCHAR ; >9重输
CBW
XCHG AX, BX
MOV DX, 10
MUL DX
XCHG AX, BX
ADD BX, AX
LOOP NEWCHAR
EXIT:
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
MOV CH, 4
ROTATE: MOV CL, 4
MOV AL, BL
AND AL, 0FH
ADD AL, 30H ; ’0’~’9’ASCII 30H~39H
CMP AL, 3AH
JL PRINTIT
ADD AL, 7H ; ’A’~’F’ASCII 41H~46H PRINTIT: MOV DL, AL
MOV AH, 2
INT 21H
DEC CH
JNZ ROTATE
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
1.从键盘接收一个字符,然后显示其对应的前导、本身和后继字符。

CODES SEGMENT ;代码段
ASSUME CS:CODES
START:
;请在这里添加您的代码
MOV AH,1
INT 21H
MOV CX,3
DEC AL
LP: MOV AH,2
MOV DL,AL
INT 21H
INC AL
LOOP LP
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
2.在屏幕上显示26个大写英文字母A~Z。

CODES SEGMENT ;代码段
ASSUME CS:CODES
START: MOV AX,DATAS ;初始化
MOV DS,AX
;请在这里添加您的代码
MOV AL,41H
MOV CX,26
LP: MOV AH,2
MOV DL,AL
INT 21H
INC AL
LOOP LP
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START。

相关主题