微机原理与接口技术实验指导书
微机屏幕上。两个输入的4位数字,加上一个5位数字的和,显然在CPU的寄存器中放不下,故需要定义数据段。数据段如下:
data x1 x2 x3 data
segment db 4 dup(0) db 4 dup(0) db 5 dup(0) ends
2.因使用汇编语言编写程序时,屏幕上一切显示均由编程者控制,编程者让显示什么就显示什么,编程者不让显示,则不会自动显示。故对本实验,当屏幕上需要显示加号+和等号=时,也需要通过编程者写程序来实现。显示加号的程序为:
mov dl, ?+‘ mov ah, 2 int 21h mov dl, ?=‘ mov ah, 2 int 21h
显示等号的程序为:
3. BCD码相加程序
当两个4位BCD码全都输入到x1和x2变量中后,存储器中的内容为:
30
x1、x2和x3地址中存的都是最高位数字,这时应注意,而相加应从最低位x1+3和x2+3开始,和的最低位为x3+4。
X X
X X
X X
X X
C表示进位
相加的示意图为:
ADC ADD(ADC) +
C C C C 0
X
X
X
X
X
由示意图可见,相加要进行5次,第一次是两个4位BCD码的个位数相加,应采用ADD指令。第二至第四次相加为两个加数的十、百、千位相加,相加时还应考虑到来自低位的进位,应采用ADC指令。但为了使程序简单,可统一采用ADC指令,但在个位相加前,先将进位标志位清零。指令OR CX,CX不改变CX的值,但可将CF清零。
当两个BCD码的千位数相加完后,还可能向万位产生进位,可利用如下方法得到
和的万位数:
相加的程序为:
mov si, (offset x1)+3
;x1的个位偏移地址
mov al, 0 adc al, 0
;送数不改变标志寄存器状态 ;AL=AL+0+CF
mov di, (offset x2)+3 ;x2的个位偏移地址 mov bx, (offset x3)+4 ;x3的个位偏移地址 mov cx, 4 or cx, cx mov al, [si] adc al, [di]
31
;循环加4次 ;CF=0 ;取x1 ;加上x2
next2:
微机原理与接口技术实验指导书
aaa
;调整为BCD码 ;存和
mov [bx], al dec si dec di dec bx loop next2 mov al, 0 adc al, 0 mov [bx], al
;加上千位向万位的进位 ;存和的万位
4. 程序的结构:
汇编语言程序一般由三个段组成,其中,堆栈段和码段总是需要的,但数据段则根据实际情况,可设也可不设。三个段的设置如下: a) 堆栈段(对本课程所涉及的所有程序均适用):
stack
segment stack dw 100 dup(0) ends
stack
b) 数据段
如前面所示。
c) 码段
code
segment
assume cs:code, ds:data, ss:stack
;---------------------主程序----------------------- main
proc mov ax, data mov ds, ax … mov ah, 4ch int 21h
32
exit:
main endp
;----------------输入单个数字键子程序-------------- keyin
proc … ret endp ends end main
keyin code
5. 程序流程图
开始 初始化 输入X1 显示’+’ 输入X2
显示’=’ X3=X1+X2 显示X3 结束 初始化为正式编写程序前需要进行的设置,目前主要是设置数据段的段地址:
mov ax, data mov ds, ax
33
微机原理与接口技术实验指导书
六、实验步骤
1. 打开运行TPC-ZK-II集成开发环境;
2. 建立新的.asm空白文件,将编写好的程序拷贝到空白文件内,或者直接在TPC-ZK-II集成开发环境运行界面下打开已编写好并且保存的汇编语言源程序文件,保存该文件;
3. 对程序进行编译、链接、调试,生成可执行文件。(注意事项7.1); 4. 运行,从键盘输入两个4位数,显示实验结果,由结果验证程序是否正确。
七、注意事项
1. 计算机必须连接实验箱后,才能够在TPC-ZK-II集成开发环境中完成编译连接运行整个过程。没有连接实验箱的计算机TPC-ZK-II集成开发环境中只能对程序进行编译连接,运行时会报错。需要按照下面方法运行程序:
计算机任务栏左侧开始-运行-输入cmd-打开command窗口,指明之前保存源程序文件的文件夹路径,输入可执行文件名,回车即可运行可执行文件查看实验结果是否正确。
2. 因为公共实验室的计算机都装有防病毒卡,所以请将程序保存在非系统盘内,否则计算机意外关机或重启后所作的工作都将丢失。 八、实验报告要求
实验报告中应包括以下内容: 1. 本实验所涉及工程问题描述 2. 实验工作原理与理论分析 3. 预习思考题的实验验证分析 4. 实验过程描述和实验结果分析 5. 实验结论 6. 课后思考题 7.个人体会和建议
34