北京邮电大学微机原理软件 下载本文

实验报告

MOV AH,02H MOV DL,ODDNEG ADD DL,30H INT 21H MOV DL,0AH INT 21H MOV DL,0DH INT 21H

MOV AH,09H ; MOV DX,SEG STRING7 MOV DS,DX

LEA DX,STRING7 INT 21H MOV AH,02H MOV DL,EVENNEG ADD DL,30H INT 21H MOV DL,0AH INT 21H MOV DL,0DH INT 21H

MOV AX,4C00H INT 21H CODE ENDS END START 五、程序运行结果

北京邮电大学 微机原理软件

显示负偶数 6

实验报告

北京邮电大学 微机原理软件

六、预习题

1.十进制数 0 -- 9 所对应的 ASCII 码是什么? 如何将十进制数 0 -- 9 在 屏幕上显示出来?

答:十进制数0—9对应的ASCII码是30H—31H。由于屏幕上显示是通过字符的ASCII码来输出,为了能够显示十进制0-9,把对应数字的ASCII码赋给AL寄存器即可。

2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?

答:

1.将待检验数与0比较,判断CF、OF或者以表达式的返回值来判断 2.将待检验数与80H相与,判断ZF的值。 七、实验总结

分支结构和循环结构的使用需要良好的逻辑思维,前期的实验设计至关重要。实际上本实验用的统计个数的方法并不是最佳算法,在一份从百度文库里下载下来的学长的实验报告里,使用了总的数据个数减去偶数数据个数,最后得到奇数个数的办法,使程序更加简洁流畅。这给我的启示是在实验设计的初期就应该统筹全局,才能尽可能地优化设计。

7

实验报告

北京邮电大学 微机原理软件

实验三 代码转换程序设计

一、实验目的

1.掌握几种最基本的代码转换方法; 2.运用子程序进行程序设计. 二、实验内容

1.从键盘上输入若干两位十进制数,寻找其中的最小值,然后在屏幕上显示出来. 2.两个十进制数之间的分隔符,输入结束标志自定,但要在报告中说明. 3.对输入要有检错措施,以防止非法字符输入,并有适当的提示.

4.将整个程序分解为若干模块,分别用子程序实现.在报告中要给出模块层次图. 三、实验设计

8

实验报告

四、源程序DATA SEGMENT

INNUM DB 100 DUP (0)

BUFF DB 99,0,'$' ;STRING DB 0DH,0AH,'input error! ',0DH,0AH, '$'

北京邮电大学 微机原理软件

设一个最小值99 9

实验报告

北京邮电大学 微机原理软件

STRING1 DB 0DH,0AH,'the minest number is:',0DH,0AH, '$' STRING2 DB 0DH,0AH,'please input a number:',0DH,0AH, '$' DATA ENDS

STACK SEGMENT STACK DW 50 DUP(?) STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK INPUT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX STAR: MOV CX,0 MOV BX,OFFSET INNUM AGAIN:

MOV AH,01H ; INT 21H

CMP AL,30H ; JB ERROR ; CMP AL,39H JA ERROR MOV [BX],AL ;制数)

INC BX INC CX AND CX,1

JNZ AGAIN ; MOV CX,0

MOV AH,01H ; INT 21H MOV [BX],AL

INC BX

CMP AL,20H ; JZ AGAIN

CMP AL,0DH ; JNZ ERROR ; JMP ENDIN ;ERROR: MOV AH,09H MOV DX,SEG STRING MOV DS,DX LEA DX,STRING INT 21H

JMP STAR

输入

比较是否合法

不合法的话就进行错误提示 存储并判断是否是一个字(两位十进通过cx的值判断 输入下一个字符 判断是否为空格(字符间隔标志) 判断是否为回车(输入结束标志) 输入既不是空格又不是回车 进行错误提示 10