微机原理实验88570
- 格式:doc
- 大小:787.00 KB
- 文档页数:50
微型计算机原理实验报告 学号 40953055 姓名 海米提。热合木江 班级 测控0902班 —
欢迎下载 2 实验一 显示程序实验 一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。
流程图 —
欢迎下载 3 2.试验程序
DATA SEGMENT MES DB 'Show a as hex:', 0AH,0DH,'$' SD DB 'a' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES MOV AH, 09H INT 21H MOV DI, OFFSET SD MOV AL, DS:[DI] AND AL, 0F0H SHR AL,4 CMP AL, 0AH JB C2 ADD AL, 07H C2: ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, DS:[DI] AND AL, 0FH CMP AL, 0AH JB C3 ADD AL, 07H C3: ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START —
欢迎下载 4 —
欢迎下载 5 实验二 数据传送实验
三、实验内容 将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上
1. 试验程序 DATA SEGMENT MSR DB "HELLO,WORLD!$" LEN EQU $- MSR DDATA ENDS EXDA SEGMENT MSD DB LEN DUP(?) EXDA ENDS MYSTACK SEGMENT STACK DW 20 DUP(?) MYSTACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DDATA, ES:EXDA START: MOV AX, DDATA MOV DS, AX MOV AX, EXDA MOV ES,AX MOV SI, OFFSET MSR MOV DI, OFFSET MSD MOV CX, LEN NEXT: MOV AL, [SI] MOV ES:[DI], AL INC SI INC DI DEC CX JNZ NEXT PUSH ES POP DS MOV DX, OFFSET MSD MOV AH, 9 INT 21H MOV AX, 4C00H — 欢迎下载 6 INT 21H CODE ENDS END START MOV BX, 0 MOV CX, LEN NEXT: MOV AL, MSR[BX] MOV ES:MSD[BX], AL INC BX LOOP NEXT
2.实验结果 —
欢迎下载 7 实验三 数码转换程序实验 1. 将ASCII码表示的十进制数转换为二进制数 1. 流程图
2.试验程序 DATAS SEGMENT NUMBER DB '00012' DATAS ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV CX,4 MOV SI,OFFSET NUMBER MOV AL,[SI] SUB AL,30H MOV AH,00H MOV BL,10 L1: MUL BL ADD AL,[SI+1] SUB AL,30H — 欢迎下载 8 INC SI DEC CX JNZ L1 MOV CX,8 MOV BL,AL NEXT: SHL BL,1 JC ONE MOV DL,30H JMP EXIT ONE: MOV DL,31H EXIT: MOV AH,02H INT 21H DEC CX JNZ NEXT MOV AH,4CH INT 21H
CODE ENDS END START 3.实验结果
2. 将十进制数的ASCII码转换为BCD码 本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASCII码取其低四位即变为BCD码 —
欢迎下载 9 1. 实验流程图
2.实验程序 DATAS SEGMENT BUF DB 6 DB ? DB 6 DUP(?) BUFE DB 'FF$' DATAS ENDS CODE SEGMENT ASSUME DS:DATAS,CS:CODE START: MOV AX,DATAS MOV DS,AX MOV DX,OFFSET BUF MOV AH,10 INT 21H MOV CH,5 MOV SI,DX L2: MOV BL,[SI+2] INC SI CMP BL,39H JA L1 SUB BL,30H — 欢迎下载 10 AND BL,0FH MOV DH,4 MOV CL,4 ;SHL AL,CL ROL BL,CL NEXT: SHL BL,1 JC ONE MOV DL,30H JMP EXIT ONE: MOV DL,31H EXIT: MOV AH,2 INT 21H DEC DH JNZ NEXT DEC CH JNZ L2 JMP L3 L1: MOV DX,OFFSET BUFE MOV AH,9 INT 21H L3: MOV AH,4CH INT 21H CODE ENDS END START 3.实验结果 —
欢迎下载 11 3.将十六进制数的ASCII码转换为十进制数 十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为: ND=D4×104+D3×103+D2×102+D1×10+D0 因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转结果显示在屏幕
1. 实验流程图
2. 实验程序 DATA SEGMENT BUF DB 5 DB ? DB 5 DUP(?) HEX DB 4 DUP(?) DECI DB 5 DUP(0),'$' S1 DB '16JINZHI : $' S2 DB 0AH,0DH,'10JINZHI : $' DATA ENDS CODE SEGMENT — 欢迎下载 12 ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,S1 MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H
MOV SI,2 MOV DI,0 CHECK: MOV AL,[SI][BUF] CMP AL,40H JS NUM CMP AL,47H JS CAPITAL SUB AL,57H JMP STORE NUM: SUB AL,30H JMP STORE CAPITAL: SUB AL,37H JMP STORE
STORE: MOV HEX[DI],AL INC DI INC SI CMP DI,4 JNZ CHECK
LEA DX,S2 MOV AH,9 INT 21H
MOV AX,WORD PTR HEX SHL AL,4 ADD AH,AL MOV CH,AH MOV AX,WORD PTR 2[HEX] SHL AL,4 ADD AL,AH MOV AH,CH
MOV SI,5