微机原理课程设计

微机原理课程设计
微机原理课程设计

微机原理课程设计

《微机原理与接口技术》课程设计

院系:

班级:

姓名:

指导教师:

日期:

一设计任务:

编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数和十进制数。(课例027、017、024)

二设计方案

将接收到的数转成16进制数,将这个数保存在一个通用寄存器中(如AX),然后对AX循环做16次SHL,由carry标志寄存器的状态来判断显示0/1。十六位二进制数保存在BX中,对BX中的二进制数循环左移,每次移一位,然后把BL中的二进制数送给AL,再对AL 的前7位进行屏蔽,只留一位原本是最高位的那位二进制数,它要么为1,要么为0。然而把AL中的这位二进制数转换为十进制数,并且输出,由于AL高7位都为0,所以转换位十进制后,然后要么为1,要么为0,并且与那位二进制数相对应。这样循环做16次,就把整个BX中的二进制数都显示出来。

软件VisulASMSetup汇编程序的上机过程是:

1)打开软件建立新文件并把程序粘贴在文件上点击汇编源程序2)下一步然后再点链接目标码

3)然后点调试程序

4)最后点运行程序

三流程图

N

N

开始

初始化循环计数值

BX 循环逻辑左移一个数位

输入一个四位的

十六进制数

>9吗?

转换为十进制

显示二进制数

循环计数器

=0?

结束

1.程序运行结果截图

附录

STACK SEGMENT PARA STACK 'STACK'

DW200DUP(0);初始化堆栈大小为

STACK ENDS

DATE SEGMENT

TRANB DB0DH,0AH,'The transformed binary is:',0DH,0AH,'$'

TRAND DB0DH,0AH,'The transformed demical is:',0DH,0AH,'$'

RESULT DB5DUP(?),'$'

DATE ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATE,SS:STACK

MAIN PROC FAR;主程序入口

MOV AX,DATE

MOV DS,AX

MOV BX,0

MOV CH,4

MOV CL,4

INPUT:SHL BX,CL

MOV AH,01H

INT21H

CMP AL,39H; 大于则转移

JA AF

AND AL,0FH

JMP BINARY

AF:AND AL,0FH

ADD AL,09H

BINARY:OR BL,AL

DEC CH

JNZ INPUT; 转换完成二进制数在BX中

PUSH BX

LEA DX,TRANB

MOV AH,9

INT21H; 显示字符串DISPB:MOV CX,10H; 显示二进制数

DISP:MOV DL,0

ROL BX,1

RCL DL,1

ADD DL,30H

MOV AH,2

INT21H

LOOP DISP

POP BX

MOV CX,5

MOV AX,BX

MOV BX,10

MOV DI,OFFSET RESULT+4 JBY:XOR DX,DX

DIV BX

OR DL,30H

MOV BYTE PTR[DI],DL

DEC DI

LOOP JBY

LEA DX,TRAND

MOV AH,9

INT21H; 显示字符串

MOV DX,OFFSET RESULT

MOV AH,9

INT21H

MOV AH,1

INT21H

MOV AH,4CH;程序结束,返回到操作系统系统INT21H

RET

MAIN ENDP

CODE ENDS

END MAIN

相关主题
相关文档
最新文档