微机原理 实验四 循环结构程序设计
汇编语言-实验四-循环分支程序设计

实验四循环分支程序设计一&实验目的1、熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
2、掌握循环及分支程序的设计方法;3、学会针对不同的问题,选用不同的循环分支结构设计方法;二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。
三&实验要求1、使用正确的指令格式和程序结构编写实验内容要求的所有程序;2、对编写或改写的程序进行汇编连接时,注意对错误信息的处理;3、熟悉源程序汇编、连接的使用方法。
四&实验内容1、使用程序1掌握汇编语言程序上机过程,2、阅读程序2,理解程序功能并上机运行,使用debug检验结果。
3、编写一个程序,判别键盘上输入的字符;若是1-9字符或A-Z ,则显示之;若为a-z字符,均显示“A-Z”;若是<ESC>(其ASCII码为1BH),则结束程序。
4、改写任务三中的程序:输入小写字母a时,显示内容为aA*输入小写字母a时,显示内容为a***输入小写字母a时,显示内容为aa***五&实验步骤1、用EDIT编辑软件,编写.ASM源程序。
2、对其进行汇编及连接,产生.EXE文件。
3、在DOS下运行.EXE文件进行。
4、实验程序清单1)程序1:stack segmentdw 512 dup(?)stack endsdata segmentstring db 'Hello, Everybody !','$'data endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hcode endsend start2)程序2data segmentx db 20hy dw ?data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov al,xmov bl,10xor ah,ahshl ax,1mov bx,axmov cl,2shl ax,cladd ax,bxmov y,axmov ax,4c00hint 21hcode endsend start3)程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bnd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start4)改写程序1:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndand al,11011111bmov ah,2int 21hmov al,'*'nd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start5)改写程序2:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againint 21hcode endsend start6)改写程序3:data segmentmessage db 'This is a sample program of keyboard and disply' db 0dh,0ah,'Please strike the key!',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov dl,almov ah,2int 21hmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start六&思考题:编写一个程序,显示AL寄存器中的两位十六进制数。
微机原理与接口技术 4循环

MOV SUM,AX
MOV CN,BX ;送结果
MOV AH,4CH
INT 21H
;返回DOS
ENDS
END START
2.多重循环程序设计
(混合控制法)
【例3】编写程序实现下列功能:统计 一个字符串对应的ASCII码串中二进制 “1”的个数。
【分析】 这需要循环嵌套,外循环对n个字符进行
循环操作,内循环对每个字符中的“1” 统计。
数据变大怎么办?
1.单循环程序设计
(条件控制法)
【例2】编写程序完成求1+2+3+……N的累 加和,直到累加和超过1000为止。统计被累 加的自然数的个数送CN单元,累加和送SUM。
【分析】 • 用寄存器处理比较快速。因为结果要求 送两种数,可分别用AX、BX操作。
DATA DATA
SEGMENT SUM DW ? CN DW ? ENDS
CODE START:
SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
;初始化
MOV AX,0
;0送AX
MOV BX,0
;0送BX
LP: CODE
INC BX
;BX加1
ADD AX,BX ;求累加和
CMP AX,1000 ;条件控制
JBE LP
;≤1000转
三、循环控制的方法
(1)计数控制法 (2)条件控制法 (3)混合控制法
1.单循环程序设计
(计数控制法)
【例1】设有两个长度为8个字节的无符号数分 别存放在以NUM1、NUM2为首地址的连续的内 存单元中,将两个数相加,并将结果存入SUM 内存单元中。
微机原理(循环程序设计)

MOV [DI],DL
MOV DH,8
SUB DH,DL
MOV [SI],DH
MOV AH,4CH
INT 21H
CODEENDS
END START
已知有5个正数,3个负数,则DH、DL分别为03和05,运行程序结束后,查询这两个区域,运行结果如图:
2.汇编程序如下:
DATA SEGMENT
MOV BX,OFFSET BUF2
BEGIN:MOV AX,[DI]
CMP AX,0000H
JGE F1
MOV [BX],AX
INC BX
INC BX
JMP F2
F1:MOV [SI],AX
INC DL
INC SI
INC SI
F2:INC DI
INC DI
LOOP BEGIN
MOV DI,OFFSET A
END START
用AX来存放TOTOL,DX存COUNT,运行结果如图:
实验总结:
通过本次实验,对循环结构程序设计能熟练掌握并且应用,同时弥补了一些没有注意到的细节,比如取某段数据首地址,偏移量等语句的使用,通过练习操作,相信会使我对微机及汇编知识的学习大有帮助。
实验内容:
一、试验题目:
1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。
2.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。
实验四 循环结构程序设计

#include "stdio.h"
void main( )
{
}
2.从整数1开始向上找,直至m和n中较小的数,每找到一个能同时被m和n整除的整数,将其存入一个变量中,当循环结束时,变量中存放的即为最大公约数。设n为m和n中较小的数,则如下程序段可实现:
for(k=1; k<=n; k++) if(m%k==0 && n%k==0) x=k;
}
2.字符常量’0’与数值常量0是不同的。
(六)下面程序的功能是:计算1到100之间的奇数之和及偶数之和,并输出。请在程序中的横线上填入适当的内容,将程序补充完整并运行。
/* c4-6.c */
/* 计算1到100之间的奇数之和及偶数之和 */
#include "stdio.h"
void main( )
六、思考题
(一)求两个正整数x和y的最大公约数,请填空。
/* 求最大公约数程序 */
#include "stdio.h"
void main( )
{ int x,y,t,i;
printf("请输入两个数:");
scanf("%d,%d",&x,&y); /*注意scanf语句中间用“,”隔开*/
if(x > y){t = x; x = y; y = t;}
程序的基本结构如下:
/* c4-9.c */
/* 按条件求数列和 */
#include "stdio.h"
void main( )
{定义变量;
变量赋初值;
微机实验报告循环程序

一、实验目的1. 理解循环程序的基本概念和作用。
2. 掌握C语言中循环语句(for、while、do-while)的用法。
3. 学会分析循环程序的结构,提高程序设计能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容本次实验主要设计以下循环程序:1. 打印1到100之间的所有整数。
2. 计算1到100之间所有整数的和。
3. 输入一个整数n,打印从1到n的斐波那契数列。
四、实验步骤1. 打印1到100之间的所有整数。
```c#include <stdio.h>int main() {int i;for (i = 1; i <= 100; i++) {printf("%d ", i);}printf("\n");return 0;}```2. 计算1到100之间所有整数的和。
```c#include <stdio.h>int main() {int i, sum = 0;for (i = 1; i <= 100; i++) {sum += i;}printf("The sum of 1 to 100 is: %d\n", sum);return 0;}```3. 输入一个整数n,打印从1到n的斐波那契数列。
```c#include <stdio.h>int main() {int n, a = 1, b = 1, c;printf("Enter an integer: ");scanf("%d", &n);printf("Fibonacci sequence up to %d is:\n", n);for (int i = 1; i <= n; i++) {if (i == 1 || i == 2) {printf("%d ", a);} else {c = a + b;a = b;b = c;printf("%d ", c);}}printf("\n");return 0;}```五、实验结果与分析1. 打印1到100之间的所有整数。
实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。
1.无条件转移指令 JMP无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令 JXX条件转移指令可分为三大类:1).简单条件转移指令指令。
根据单个标志位的状态判断转移条件。
标志位指令转移条件意义CFJC CF=1 有进位/借位JNC CF=0 无进位/借位ZFJE/JZ ZF=1 相等/等于 0JNE/JNZ ZF=0 不相等/不等于 0SFJS SF=1 是负数JNS SF=0 是正数OFJO OF=1 有溢出JNO OF=0 无溢出PFJP/JPE PF=1 有偶数个 1JNP/JPO PF=0 有奇数个 12).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下:指令转移条件意义JA/JNBE CF=0 AND ZF=0 A>BJAE/JNB CF=0 OR ZF=1 A>=BJB/JNAE CF=1 AND ZF=0 A<BJBE/JNA CF=1 OR ZF=1 A<=B3).带符号数条件转移指令。
指令转移条件意义JG/JNLE SF=OF AND ZF=0 A>BJGE/JNL SF=OF OR ZF=1 A>=BJL/JNGE SF OF AND ZF=0 A<BJLE/JNG SF OF OR ZF=1 A<=B四、实验内容与步骤1、判断方程 AX2+BX+C=0是否有实根。
微机原理与接口技术实验指导_4_循环程序设计实验

循环程序设计实验2.4.1 实验目的1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
2.4.2 实验预习要求1、复习比较指令、条件转移指令和循环指令。
2、复习循环程序的结构、循环控制方法等知识。
3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。
4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。
5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。
2.4.3 实验内容计算1+2+……n=,其中n通过键盘输入。
要求在屏幕上提供如下信息:Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。
1、编程指导(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数0B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。
将键盘输入的十进制数转换为二进制数的程序清单如下:DATA SEGMENTINF1 DB "Please input a number (0-65535):$"IBUF DB 7,0,6 DUP()DATA ENDSCODE S EGMENTASSUME CS: CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET INF1MOV AH, 09HINT 21HMOV DX, OFFSET IBUF ;键入一个十进制数(<65535)MOV AH, 0AHINT 21HMOV CL, IBUF+1 ;十进制数的位数送CXMOV CH, 0MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)MOV AX, 0 ;开始将十进制数转换为二进制数AGAIN: MOV DX, 10 ; ((010+a4) 10+…) 10+a0MUL DXAND BYTE PTR [SI], 0FHADD AL, [SI]A DC AH, 0I NC SILOOP AGAINMOV AH, 4CHINT 21HCODE ENDSEND START本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。
微机原理与汇编语言实验循环程序设计实验

微机原理与汇编语言实验报告姓名x x x学号xxxxxx 专业班级计科x班课程名称微机原理与汇编语言实验日期2014.10.22实验名称循环程序设计实验成绩一、实验目的1、掌握循环程序的设计方法。
2、掌握比较指令、转移指令和循环指令的使用方法。
3、进一步掌握调试工具的使用方法。
二、实验内容1、实验原理(1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题(2)累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数2、实验步骤(1)流程图(2)实验源码.model small.stack ;定义堆栈段.data ;定义数据段inf1 db "Please input a number(1-627):$"inf2 db 0ah, 0dh, "1+2+......+$"ibuf db 7, 0, 6 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov dx, offset inf1;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax 中mov ah, 09hint 21hmov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1mov ch, 0mov si, offset ibuf+2mov ax, 0loop1: mov dx, 10mul dxand byte ptr [si], 0Fhadd al, [si] 从键盘输入一个十进制数,并将其转换为二进制数,存放在AX中开始结束素、、(CX)-1=0累加循环次数送CX(MOV CX,AX)AX清0(AX中存放累加和)BX送1(BX存放每次循环累加的数,每循环一次,BX值加1)ADD AX,BXINC BX累加和(在AX中)转换为十进制数并显示YNadc ah, 0inc siloop loop1mov cx, ax ;计算1+2+3+...+nmov ax, 0mov bx, 1loop2: add ax, bxinc bxloop loop2mov di, offset obuf+6 ;将ax中的二进制数转换为十进制数并以ascii的形式存于obufmov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3dec dimov [di], '='mov dx, offset inf2 ;结果输出mov ah, 09hint 21hmov cl, ibuf+1 ;显示nmov ch, 0mov si, offset ibuf+2loop4: mov dl, [si]add dl, 30hinc simov ah, 02hint 21hloop loop4mov dx, dimov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题1源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段inf1 db 0ah, 0dh, "1+2+......+$"obuf1 db 6 dup(0)obuf2 db 7 dup(0) ;除了六位数字外还要有一个=号.codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出 1+2+......+mov ah, 09hint 21hmov ax, 0 ;计算1+2+3+...+nmov bx, 1loop1: add ax, bxinc bxcmp ax, 60000jbe loop1push ax ;将最终结果备份入栈push bx ;将n备份pop cxmov di, offset obuf1+5;将cx二进制数转换为十进制数并以ascii的形式存于obuf1mov byte ptr [di], '$'mov ax, cxmov bx, 10loop2: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop2mov dx, di ;输出nmov ah, 09hint 21hpop axmov di, offset obuf2+6;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf2mov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3dec dimov [di], '='mov dx, di ;=输出结果mov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题2源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段inf1 db 'Please input six num:', 0ah, 0dh, '$'inf2 db 'sum:$'obuf0 db 0ah, 0dh, '$'ibuf db 5, 0, 4 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出提示信息mov ah, 09hint 21hmov bx, 6 ;设置外层循环次数loop1: mov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1 ;设置内层循环次数mov ch, 0mov si, offset ibuf+2mov ax, 0loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dxand byte ptr[si], 0Fhadd al, [si]adc ah, 0inc siloop loop2push ax ;将结果入栈保存mov dx, offset obuf0 ;回车换行mov ah, 09hint 21hdec bxcmp bx, 0jnz loop1mov cx, 6mov ax, 0loop3: pop bxadd ax, bxloop loop3mov di, offset obuf+5;将ax中的二进制数转换为十进制数并以ascii的形式存于obuf mov byte ptr [di], '$'mov bx, 10loop4: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop4mov dx, offset inf2 ;输出提示信息mov ah, 09hint 21hmov dx, dimov ah, 09hint 21hmov ax, 4c00hint 21hend start实验习题3源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段.data ;定义数据段inf db "Please input a num(0-65535):$"inf2 db 0ah, 0dh, "The num of 1:$"ibuf db 6, 0, 5 dup(0)obuf db 6 dup(0).codestart: mov ax, @datamov ds, axmov es, axmov ah, 09h ;输出提示信息Please input a num:mov dx, offset infint 21hmov ah, 0Ah ;接收一个无符号十进制整数(小于65536)mov dx, offset ibufint 21hmov ax, 0mov cl, ibuf+1;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中mov ch, 0mov si, offset ibuf+2loop1: mov dx, 10mul dxand byte ptr[si], 0Fhadd al, [si]adc ah, 0inc siloop loop1mov bx, 0loop2: shr ax, 1adc bx, 0cmp ax, 0jnz loop2mov ax, bxmov di, offset obuf+5;将ax中的二进制数转换为十进制数并以ascii的形式存于obufmov byte ptr [di], '$'mov bx, 10loop3: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop3mov ah, 09h ;输出提示信息The num of 1:mov dx, offset inf2int 21hmov ah, 09h ;将统计结果在屏幕上显示出来mov dx, diint 21hmov ax, 4c00hint 21hend start实验习题4源码:; multi-segment executable file template..model small ;定义程序的存储模式(small表示小型模式).stack ;定义堆栈段.data ;定义数据段N equ 5ibuf db 4, 0, 3 dup(0)inf1 db 'Please input N num(0-255):', 0ah, 0dh, '$'inf2 db 'Sort:', 0ah, 0dh, '$'buf db N dup(0)obuf2 db 4 dup(0)obuf db 0ah, 0dh, '$'.codestart: mov ax, @datamov ds, axmov dx, offset inf1 ;输出提示信息mov ah, 09hint 21hmov di, offset bufmov bx, N ;设置外层循环次数loop1: mov dx, offset ibufmov ah, 0Ahint 21hmov cl, ibuf+1 ;设置内层循环次数mov ch, 0mov si, offset ibuf+2mov ax, 0loop2: mov dx, 10 ;将屏幕输入的十进制数(存放于ibuf)转化为二进制数存储于ax中 mul dxand byte ptr[si], 0Fhadd al, [si]inc siloop loop2mov [di], alinc dimov dx, offset obuf ;回车换行mov ah, 09hint 21hdec bxcmp bx, 0jnz loop1mov bx, N-1 ;比较大小mov cx, bxmov dx, bxmov di, offset bufloop3: mov si, dimov al, [di]inc siloop4: cmp [si], aljbe loop5mov al, [si]mov ah, [di]mov [si], ahmov [di], alloop5: inc siloop loop4dec dxmov cx, dxinc didec bxcmp bx, 0jne loop3mov dx, offset inf2 ;输出提示信息mov ah, 09hint 21h;结果输出mov cx, Nmov si, offset bufloop6: mov di, offset obuf2+3;将buf中的二进制数转换为十进制数并以ascii的形式存于obuf2,并输出 mov byte ptr [di], '$'mov bx, 10mov al, [si]mov ah, 0loop7: mov dx, 0div bxadd dl, 30hdec dimov [di], dlor ax, axjnz loop7mov dx, dimov ah, 09hint 21hmov dx, offset obufmov ah, 09hint 21hinc siloop loop6mov ax, 4c00hint 21hend start3、实验结果(1)实验结果(2)实验习题1程序流程图:(3)实验习题2(4)实验习题3(5)实验习题4三、实验总结1)通过本次实验我掌握循环程序的设计方法,掌握比较指令、转移指令和循环指令的使用方法,进一步掌握了调试工具的使用方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 循环结构程序设计
一、项目(实训)名称:
循环结构程序设计
二、项目(实训)学时数:
学时数:4
三、项目(实训)目标:
1)熟悉8086CPU的寻址方式和指令系统。
2)掌握汇编语言程序设计上机步骤。
3)用实例上机调试。
四、项目(实训)中的具体任务:
1)熟悉8086/8088 的指令系统循环结构程序。
.
2)按汇编语言程序设计上机步骤上机。
3)初步学会编写和调试循环结构程序。
五、教师知识和能力要求:
要求教师熟悉微机的结构和工作原理,熟悉8086CPU的寻址方式和指令系统,掌握汇编语言程序设计上机步骤。
六、学生知识和能力准备:
认真阅读8086CPU的寻址方式和指令系统。
编写循环结构汇编语言程序。
做好实验工具软件和资料准备。
七、工具与设备:
八、辅助教学资料:
汇编语言程序设计韩海编
九、实施步骤与技术要点:
题目一:编写程序,在一行上依次显示26个大写英文字母。
用循环语句LOOP实现。
1.画出流程图,编写源程序:
2.汇编程序产生目标文件:
3.链接程序产生可执行文件:
4.运行可执行文件,运行结果截图如下:
题目二:(1)编程以二进制形式显示BX的值(假设为无符号数)。
如果(BX)=20,那么显示“0000000000010100B”。
以循环结构(LOOP 语句)实现。
(2)设BX=20166,编程以十六进制形式显示BX的值(假设为无符号数)。
即显示“4EC6H”,用LOOP语句实现。
1.画出流程图,编写源程序:
2.汇编程序产生目标文件:
3.链接程序产生可执行文件:
4.运行可执行文件,运行结果截图如下:
二、考核或评价标准:
1. 检查上机步骤及调试结果:(60分)
2.程序调试分析的正确性:(20分),
3.结合思考题答辩情况(20分),综合评定成绩。