微机原理习题与实验-F 下载本文

值,注意观察看是否符合预期。如图4-9所示

图4-9 单步执行

图4-10 查看数据

通过查看数据窗口了解程序执行情况,获知程序执行结果。如图4-10、图4-11所示。

图4-11 DS数据窗口

四、实验报告

汇编,连接及调试时产生的错误,其原因及解决办法。

例程

DATA SEGMENT MESSAGE DB 0DH,0AH

DB 'THIS IS A SAMPLE PROGRAM OF KEYBOARD AND DISPLAY',0DH,0AH DB 'PLEASE STRIKE THE KEY!',0DH,0AH,'$' DATA ENDS

STACK SEGMENT PARA STACK 'STACK'

DW 50 DUP(?)

STACK ENDS

CODE SEGMENT

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

START: MOV AX,DATA

MOV DS,AX

MAS: MOV DX,OFFSET MESSAGE

MOV AH,9 INT 21H

AGAIN: MOV AH,1

INT 21H CMP AL,1BH JE EXIT ;ESC 程序结束 CMP AL,61H JC ND CMP AL,7AH JC ND1 JMP MAS

ND: ADD AL,20H ND1: MOV DL,AL

MOV AH,2 INT 21H JMP AGAIN

EXIT: CODE

MOV INT ENDS END

AH,4CH 21H START

实验2 BCD到ASCII码转换

一、实验目的

1. 了解BCD值和ASCII值的区别 2. 了解如何将BCD值转换成ASCII值

3. 了解如何查表进行数值转换及快速计算。

二、实验内容

给出一个BCD数,将其转换成ASCII值。

三、实验步骤 (与实验1相同) 例程

给出要转换数BCD码 取出BCD码高四位

查表得到ASCII码

保存高位ASCII码 取出BCD码低四位 查表得到ASCII码

保存低位ASCII码

结束

DATA SEGMENT RESULT DB 2 DUP(?) ASCIITAB:

DB \ ; 定义数字对应的ASCII表 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA START PROC NEAR MOV AX, DATA MOV DS, AX MOV AX, 1AH MOV BL, AL SHR BL, 4 MOV BH, 0

MOV AH, BYTE PTR ASCIITAB[BX] MOV RESULT, AH AND AL, 0FH MOV BL,AL

MOV AH, BYTE PTR ASCIITAB[BX] MOV RESULT+1,AH JMP $ CODE ENDS END START

实验4 两个多位十进制数相减

一、实验目的

1、 学习数据传送和算术运算指令的用法。

2、 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

将两个多位十进制数相减,要求被减数、减数均以ASCII码形式顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前),结果送DATA1处。

三、实验步骤(与实验1相同 )

清除最低进位位

带进位减 结果送被减数区 调整偏移量

开始 显示减数和被减数 减数和被减数转换成十六进制设置计数值 N 计数值-1=0?