系统认识
一、实验目的
掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
二、实验设备
PC微机一台,TD-PITE实验装置一套。
三、实验内容
编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
四、实验步骤
1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。


图1
 
3. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。默认文件名为Wmd861。
图2
 
4. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图3
程序:
SSTACK    SEGMENT STACK                ;定义堆栈段
        DW 32 DUP(?)
SSTACK    ENDS
CODE    SEGMENT
        ASSUME CS:CODE, SS:SSTACK
START:    PUSH DS
        XOR AX, AX
        MOV DS, AX
        MOV SI, 3000H                ;建立数据起始地址
        MOV CX, 16                    ;循环次数
AA1:    MOV [SI], AL
        INC SI                        ;地址自加1
        INC AL                        ;数据自加1
        LOOP AA1
AA2:    JMP AA2
CODE    ENDS
        END START
5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。
图4
 
图5
6. 连接PC与实验系统的通讯电缆,打开实验系统电源。
7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击 下载程序。 为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿的背景。如图6所示。
图6
8. 将输出区切换到调试窗口,使用D0000:3000命令查看内存3000H起始地址的数据,如图7所示。存储器在初始状态时,默认数据为CC。
 
图7
9. 点击按钮运行程序,然后再点击来停止程序运行,接下来观察程序运行结果,仍使用命令D0000:3000来观察数据变化。如图8所示。
图8
10. 也可以通过在语句AA2: JMP AA2处设置断点,断点显示如图9所示,然后运行程序,当遇到断点时程序会停下来,然后观察数据。可以使用E0000:3000来改变该地址单元的数据,如图10所示,输入11后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。
图9
图10
   
操作练习:
编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。

实验一  数码转换编程及程序调试
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
熟悉程序调试的方法。
二、实验设备
Pc微机一台,TD-PITE实验装置一套。
三、实验内容及步骤
    计算机输入设备输入的信息一般是由ASSII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换是必不可少的。
  计算机与外设间的数制转换关系如图所示2-1所示,数制对应关系如表2-1所示。
图2-1 数制转换关系
 表1  数制对应关系表
十六进制数
BCD码
二进制机器码
ASCII码
七段码
0
0000
0000
30H
40H
3FH
1
0001
0001
31H
79H
06H
2
0010
0010
32H
24H
5BH
3
0011
0011
33H
30H
4FH
4
0100
0100
34H
19H
66H
5
0101
0101
35H
12H
6DH
6
0110
0110
汇编语言结束指令36H
02H
7DH
7
0111
0111
37H
78H
07H
8
1000
1000
38H
00H
7FH
9
1001
1001
39H
18H
67H
A
1010
41H
08H
77H
B
1010
42H
03H
7CH
C
1011
43H
46H
39H
D
1100
44H
21H
5EH
E
1110
45H
06H
79H
F
1111
46H
0EH
71H
1. 将ASCII码表示的十进制数转换为二进制数
十进制表示为:
Di代表十进制数0,1,2,…,9;
上式转换为:
由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
参考流程:
实验程序:
PUBLIC  SADD
SSTACK    SEGMENT STACK
        DW 64 DUP(?)
SSTACK    ENDS
DATA    SEGMENT
SADD    DB  30H,30H,32H,35H,36H        ;十进制数:00256
DATA    ENDS
CODE    SEGMENT
        ASSUME CS:CODE, DS:DATA
START:    MOV AX, DATA
        MOV DS, AX
        MOV AX, OFFSET SADD
        MOV SI, AX
        MOV BX, 000AH
        MOV CX, 0004H
        MOV AH, 00H
        MOV AL, [SI]
        SUB AL, 30H
A1:        IMUL BX
        MOV DX, [SI+01]
        AND DX, 00FFH
        ADC AX, DX
        SUB AL, 30H
        INC SI
        LOOP A1
A2:        JMP A2
CODE    ENDS
        END START
 
实验步骤:
(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;
(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;
(3)运行程序,然后停止程序;
(4)查看AX寄存器,即为转换结果,应为:0100 ;
(5)反复试几组数据,验证程序的正确性。
 
2. 将十进制数的ASCII码转换为BCD码
从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。由表1可知,一字节ASCII码取其低四位即变为BCD码。
实验程序:
SSTACK    SEGMENT STACK
        DW 64 DUP(?)
SSTACK    ENDS
CODE    SEGMENT
        ASSUME CS:CODE
START:    MOV CX, 0005H            ;转换位数
        MOV DI, 3500H            ;ASCII码首地址
A1:        MOV BL, 0FFH            ;将错误标志存入BL
        MOV AL, [DI]
        CMP AL, 3AH
        JNB A2                    ;不低于3AH则转A2
        SUB AL, 30H
        JB  A2                    ;低于30H则转A2
        MOV BL, AL
A2:        MOV AL, BL                ;结果或错误标志送入AL
        MOV [DI+0AH],AL            ;结果存入目标地址
        INC DI
        LOOP A1
A3:        JMP A3   
CODE    ENDS
        END START
实验步骤:
(1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统;
(2)在3500H~3504H单元中存放五位十进制数的ASCII码,即:键入E3500后,输入31,32,33,34,35;
(3)运行程序,然后停止程序运行;
(4)键入D350A,显示运行结果,应为:
0000:350A 01 02 03 04 05 CC …
(5)反复测试几组数据,验证程序功能。
 
3. 将十六位二进制数转换为ASCII码表示的十进制数
十六位二进制数的值域为0~65535,最大可转换为五位十进制数。
五位十进制数可表示为:
Di:表示十进制数0~9
将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。自行绘制程序流程图,编写程序可参考例程。例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。
实验程序: 
SSTACK    SEGMENT STACK
        DW 64 DUP(?)
SSTACK    ENDS
CODE    SEGMENT
    ASSUME CS:CODE
START:    MOV SI,3500H        ;源数据地址
    MOV DX,[SI]
    MOV SI,3515H        ;目标数据地址
A1:        DEC SI
    MOV AX,DX
    MOV DX,0000H
    MOV CX,000AH        ;除数10
    DIV CX                ;得商送AX, 得余数送DX
    XCHG AX,DX
    ADD AL,30H            ;得Di得ASCII码
    MOV [SI],AL        ;存入目标地址
    CMP DX,0000H
    JNE A1            ;判断转换结束否,未结束则转A1
A2:        CMP SI,3510H    ;与目标地址得首地址比较
    JZ A3          ;等于首地址则转A3,否则将剩余地址
    DEC SI            ;中填30H
    MOV AL,30H

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。