微机原理与接口技术汇编子程序涉及
《微机原理与接口技术》课程标准
炎黄技工学校《微机原理与接口技术》教学大纲理论课时36实践课时36总课时72考核形式考查编写时间2022-03编写人审核人机电信息工程系计算机技术教研室编《微机原理与接口技术》课程标准课程名称:微机原理与接口技术适用专业:计算机网络应用课程学分:4学分计划学时:72学时一、课程概述1、课程性质与任务本课《微机原理与接口技术》是计算机专业的一门重要的专业课,它的前续课程有《电子技术基础》、《电路原理》通过本课程的学习,为后续课程《微机控制技术》打下良好的基础。
同时与毕业设计密切相关,为它提供了硬件和软件的基础。
本课程介绍了微型计算机原理及组成结构、微机接口的有关基本知识和实用技术、常用微机接口芯片的使用方法。
2、课程基本理念结合我们学生的实际情况,在平时的教与学中主要遵循以下的理念:(1)将专业课的学习与基础理论衔接,指导学生有针对性地预习;(2)帮助学生形成强烈兴趣;(3)指导学生了解课程教学目的,教师结合教学大纲和自己对课程的把握情况,阐明《微机原理与接口技术》的课程特点;(4)培养学生良好的学习习惯。
3、课程设计思路1、总体设计原则与思路:按照“以能力为本位,以职业实践为主线,以项目课程为主体的模块化专业设计课程体系”的总体设计要求,该门课程以形成电机与变压器的原理与性能指标、运行调试及维护维修等能力为基本目标,彻底打破学科课程的设计思路,紧紧围铙工作任务完成的需求来选择和组织课程内容,突出工作任务与知识的联系,让学生在职业实践活动的基础上掌握知识,增强课程内容与职业岗位能力要求的相关性,提高学生的就业能力。
2课程设计依据与评价方法:学习项目选取的基本依据是该门课程涉及的工作领域和工作任务范围,但在具体设计过程中,以自动化专业学生的就业为向导,根据行业专家对自动化专业所涵盖的的岗位群体进行的任务和职业能力分析,同时遵循中等职业学校学生的认识规律,紧密集合职业资格证书中相关考核内容,确定本课程的工作任务模块和课程内容。
微机原理与接口技术-第4-1章
例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END
微机原理与接口技术汇编语言程序教案
微机原理与接口技术汇编语言程序教案第一章:汇编语言概述1.1 汇编语言的概念让学生了解汇编语言的定义、特点和作用。
让学生掌握汇编语言的基本组成元素,如指令、寄存器、操作数等。
1.2 汇编语言的表示方法让学生了解汇编语言的指令格式和操作数表示方法。
让学生掌握汇编语言的助记符及其含义。
1.3 汇编语言与机器代码的关系让学生了解汇编语言与机器代码的转换过程。
让学生掌握汇编语言指令与机器代码之间的对应关系。
第二章:汇编语言的语法规则2.1 指令语句的语法结构让学生了解指令语句的构成,包括操作码、寄存器、操作数等。
让学生掌握不同类型指令的语法规则,如数据传输指令、算术运算指令等。
2.2 伪指令和宏指令让学生了解伪指令和宏指令的概念及其作用。
让学生掌握伪指令和宏指令的语法规则和使用方法。
2.3 汇编语言的程序结构让学生了解汇编语言程序的组成部分,如数据段、代码段、堆栈段等。
让学生掌握汇编语言程序的格式和编写规范。
第三章:汇编语言的编程技巧3.1 寄存器的使用让学生了解寄存器的作用和分类,如AX、BX、CX、DX等。
让学生掌握寄存器在汇编语言编程中的应用技巧。
3.2 数据传输指令让学生了解数据传输指令的用法,如MOV、PUSH、POP等。
让学生掌握数据传输指令在汇编语言编程中的应用技巧。
3.3 算术运算指令让学生了解算术运算指令的用法,如ADD、SUB、MUL、DIV等。
让学生掌握算术运算指令在汇编语言编程中的应用技巧。
第四章:汇编语言程序设计实例4.1 实例一:计算两个数的和让学生了解程序设计的基本步骤,如编写算法、选择寄存器等。
让学生掌握汇编语言编程的基本技巧,如数据传输、算术运算等。
4.2 实例二:排序算法(冒泡排序)让学生了解排序算法的原理和实现方法。
让学生掌握汇编语言编程中循环结构和条件判断的使用技巧。
4.3 实例三:字符串操作让学生了解字符串的基本操作,如字符串长度计算、字符串复制等。
让学生掌握汇编语言编程中字符串操作的相关指令和技巧。
《微机原理与接口技术》实验指导书
《微机原理与接口技术》课程实验指导书实验内容EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求✧实验一实验系统及仪器仪表使用与汇编环境✧实验二简单程序设计实验✧实验三存储器读/写实验✧实验四简单I/0口扩展实验✧实验五8259A中断控制器实验✧实验六8253定时器/计数器实验✧实验七8255并行口实验✧实验八DMA实验✧实验九8250串口实验✧实验十A/D实验✧实验十一D/A实验✧实验十二8279显示器接口实验EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求EL-8086-III微机原理与接口技术教学实验系统是为微机原理与接口技术课程的教学实验而研制的,涵盖了目前流行教材的主要内容,该系统采用开放接口,并配有丰富的软硬件资源,可以形象生动地向学生展示8086及其相关接口的工作原理,其应用领域重点面向教学培训,同时也可作为8086的开发系统使用。
可供大学本科学习《微机原理与接口技术(8086)》,《单片机应用技术》等课程提供基本的实验条件,同时也可供计算机其它课程的教学和培训使用。
为配合使用EL型微机教学实验系统而开发的8086调试软件,可以在WINDOWS 2000/XP等多种操作系统下运行。
在使用本软件系统调试程序时,可以同时打开寄存器窗口、内存窗口、反汇编窗口、波形显示窗口等等,极大地方便了用户的程序调试。
该软件集源程序编辑、编译、链接、调试与一体,每项功能均为汉字下拉菜单,简明易学。
经常使用的功能均备有热键,这样可以提高程序的调试效率。
一、基本特点EL型微机教学实验系统是北京精仪达盛科技有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。
旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。
系统具有以下特点:1、系统采用了模块化设计,实验系统功能齐全,涵盖了微机教学实验课程的大部分内容。
微机原理与接口技术-汇编语言程序设计
4.1.2 8086汇编语言源程序的格式
源程序的一般格式为: NAME1 SEGMENT
语句 语句 NAME1 ENDS NAME2 SEGMENT 语句 语句 NAME2 ENDS END <标号>
第四章 汇编语言 程序设计
4.2 语句的格式
第四章 汇编语言 程序设计
汇编语句分为指令语句和伪指令语句两类,一般都由分 隔符分成的 4 个部分组成。
HLT
;然后停机
NOT DONE : IN AL, PORT_VAL ;未超过时,输入下一字节
ADD SUM, AL
;与以前的结果累加
JMP CODE ENDS ;代码段结束
END START
;整个程序结束
可以看到,8086汇编的一个语句行是由4个部分组成,即
标号 操作码 操作数 ;注释(或名字)
普通高等学校计算机教育“十三五”
微机原理与接口技术
内容导航
CONTENTS
4.1 汇编语言的格式 4.2 语句的格式 4.3 伪指令语句 4.4 指令语句 4.5 汇编语言程序设计及举例
4.1 汇编语言的格式
4.1.1 8086汇编语言的一个例子
第四章 汇编语言 程序设计
MY_DATA SEGMENT ;定义数据段
SUM DB ?
;为符号 SUM 保留一个字节
MY_DATA ENDS
;定义数据段结束
MY_CODE SEGMENT ;定义码段
ASSUME CS :MY_CODE, DS :MY_DATA
;规定 CS 和 DS 的内容
PORT_VA1 EQU 3
;端口的符号名
START :MOV AX, MY_DATA ;DS 初始化为 MY_DATA
微机原理与接口技术实验报告1- 汇编语言程序设计
西安交通大学实验报告成绩第页共页课程微机原理与接口技术实验系别生物医学工程实验日期年月日专业班级组别交报告日期年月日姓名学号报告退发 (订正、重做) 同组者教师审批签字实验名称汇编语言程序设计一、实验目的1.掌握Lab6000p实验教学系统基本操作;2.掌握8088/8086汇编语言的基本语法结构;3.熟悉8088/8086汇编语言程序设计基本方法。
二、实验设备b6000p实验教学系统;2.IBM-PC机三、实验内容1.有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。
编程并显示结果:1)如果数组是无符号数,求出最大值,并显示;2)如果数组是有符号数,求出最大值,并显示。
2.将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:”3.将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:”4.两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。
在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子程序)5.键盘输入一个小写字母(a~z),转换成大写字母显示:请输入一个小写字母(a~z):转换后的大写字母是:6.实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H= xxxxxxxxH四、实验结果1.有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。
编程并显示结果:(1)如果数组是无符号数,求出最大值,并显示;(2)如果数组是有符号数,求出最大值,并显示。
程序:(1)无符号数#make_COM#; COM file is loaded at CS:0100hORG 100hJMP STARTABC DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8HMAIN PROC FARSTART: MOV SI,0MOV AL,ABC[SI]A1: INC SICMP SI,9JNC EXITMOV BL,ABC[SI]CMP AL,BLJC A2JMP A1A2: XCHG BL,ALJMP A1EXIT: MOV CL,16DIV CLMOV DX,AXMOV CL,9CMP DL,CLJA E1ADD DL,30HMOV AH,2INT 21HE1: ADD DL,37HMOV AH,2INT 21HMOV DL,DHCMP DL,9JA E2ADD DL,30HMOV AH,2INT 21HE2: ADD DL,37HMOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HRETMAIN ENDPEND START结果:(2)有符号数#make_COM#; COM file is loaded at CS:0100hORG 100hJMP STARTSHUZU DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H MAIN PROC FARSTART: MOV SI,0MOV AL,SHUZU[SI]L1: INC SICMP SI,9JNC NEXTMOV BL,SHUZU[SI]CMP AL,BLJL L2 ;带符号数比较 JMP L1L2: XCHG BL,ALJMP L1NEXT: MOV CL,16DIV CLMOV DX,AXMOV CL,9CMP DL,CLJA L3 ;无符号数比较 ADD DL,30HMOV AH,2INT 21HJMP L4L3: ADD DL,37HMOV AH,2INT 21HL4: MOV DL,DH ;ASCII码转换 CMP DL,9JA L5ADD DL,30HMOV AH,2INT 21HJMP L5L5: ADD DL,37HMOV AH,2INT 21HL6: MOV DL,'H'MOV AH,2INT 21HHLTMAIN ENDPEND START2.将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:”程序:#make_COM#; COM file is loaded at CS:0100hORG 100hJMP START;DATA SEGMENTSHUCHU DB 'BCD IS $'ABC DB 15 DUP(?);DATA ENDSMAIN PROC FARSTART: MOV DX,OFFSET SHUCHUMOV AH,9INT 21HMOV AX,OFFSET ABCMOV DX,AXMOV AX,500H ;分离出各位数,分别进行BCD码转换SUB DX,DXMOV CX,1000DIV CXXCHG DX,AX ;商在DX中,余数在AX中MOV BX,AXADD DL,30HMOV AH,2INT 21H ;千位转换并输出MOV AX,BXMOV CL,100DIV CLMOV DX,AXADD DL,30HMOV AH,2INT 21H ;百位转换并输出MOV AL,DHSUB AH,AHMOV CL,10DIV CLMOV BX,AXMOV DL,BLADD DL,30HMOV AH,2INT 21H ;个位转换并输出MOV DL,BHADD DL,30HMOV AH,2INT 21HRETMAIN ENDPEND START结果:3.将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII 是:”程序:#make_COM#; COM file is loaded at CS:0100hORG 100hJMP START;DATA SEGMENTSHUCHU DB 'ASCII IS $'ABC DB 20 DUP(?);DATA ENDSMAIN PROC FARSTART: MOV DX,OFFSET SHUCHUMOV AH,9INT 21HMOV CH,4MOV AX,OFFSET ABCMOV DX,AXMOV BX,7693HEXIT: MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FH ;与运算分离出最高位MOV AH,0ADD AL,30HMOV CL,16DIV CL ;分离出高位和低位MOV DH,AHMOV DL,ALADD DL,30HMOV AH,2INT 21HMOV DL,DHADD DL,30HMOV AH,2INT 21H ;分别输出高低位DEC CHJNZ EXIT ;进行循环HLTMAIN ENDPEND START结果:4.两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。
微机原理及接口技术(习题答案)
第1章微机运算基础习题和思考题1.请完成以下计算:174.66D=(10101110.10101)B=(AE. A8)H10101110101.01011B=(1397.344)D=(575.58)H4BCH=(010*********)B=()BCD2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值是多少?答:当X表示原码时,其真值为:+101010当X表示补码时,其真值为:+101010当X表示反码时,其真值为:+101010当X表示无符号数数时,其真值为:001010103.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出?120+18 -33-37-90-70 50+84答:120+18其补码形式分别为:(120)补=01111000 (18)补=0001001001111000+ 0001001010001010由于C s=0 ,C p=1,因此有溢出,结果错误-33-37其补码形式为:(-33)补=11011111 (-37)补=1101101111011111+1101101110111010由于C s=1, C p=1,所以没有溢出,结果正确-90-70其补码形式为:(-90)补=10011100 (-70)补=1011101010011100+1011101001010110由于C s=1, C p=0,所以有溢出,结果错误50+84其补码形式为:(50)补=00110010 (84)补=0101010000110010+0101010010000110由于C s=0, C p=1,所以有溢出,结果错误4.请写出下列字符串的ASCII码值。
My name is Zhang san.4D 79 6E 61 6D 65 69 73 5A 68 61 6E 67 73 61 6E 2E第2章 80X86微机系统习题与思考题1.微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。
[计算机硬件及网络]微机原理与接口技术汇编语言程序设计
ORG 200H
;目标程序的偏移量
DATA SEGMENT
;数据段开始
指令性语句和指示性语句的最大区别就是指示性 语句在标识符和伪指令助记符没有冒号
4.2 汇编语言程序结构
段定义伪指令SEGMENT、ENDS、ASSUME
伪指令SEGMENT和ENDS总是成对出现。SEGMENT用来定义 段开始,ENDS是来定义段结束。这一段伪指令可以将源程序 分为几个段,通常为数据段,堆栈段和代码段。
汇编语句语句格式
指令性语句的格式如下:
<标识符:> 指令助记符 目标操作数 <,源操作数> <;注释>
START: MOV AX,1090H
;将16进制数1090H送入AX
INC BX
指示性语句的格式如下:
<标识符> 伪指令助记符 <操作数1,操作数2…> <;注释>
CR DB ODH
;在字节单元CR处存放数据0DH
段,所以错误信息并不
←“no stack segment”
影响程序正常执行。
DEBUG和MASM的区别
DEBUG是调试器,它的主要用途在于除错,能够 观察每条汇编语句运行后的结果,方便的修正汇编 程序中的错误。DEBUG中必须使用16进制的数。
MASM是一种编译器,它能将汇编源程序进行编 译、链接形成可执行文件,但汇编程序必须使用规 范书写方式,源程序中除了指令性语句,还必须加 入许多与指令语句无关的指示性语句,以供编译器 识别。 MASM中的数据默认为10进制。
汇编源文件 .ASM
汇编 MASM.EXE
目执行程序 .EXE
汇编语言语句类型
指令性语句
第5章(6)微机原理与接口技术(第三版)(王忠民)
MAIN PROC FAR ASSUME CX:CODES, DS:DATAS, SS:STACS START: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATAS MOV DS, AX
第5章 汇编语言程序设计
MOV MOV LOOPT:INC ADD CMP JBE MOV MOV RET MAIN ENDP CODES ENDS END START
第5章 汇编语言程序设计
循环控制方法举例
⑴ 用计数控制循环
[例] 在xx单元开始的连续单元中存放有 10个无符号字节数,从中找出最大者送yy单元。
由题意可直接写出数据段如下:
DATA SEGMENT xx DB
49,38,65,12,97,13,55,27,28,85 yy DB ?
DATA ENDS
第5章 汇编语言程序设计
开始
BX←xx的有效地址, AL←[BX],CX←9
BX←BX+1
AL≥ [BX]?
Y
N AL,[BX]中的数交换
CX←CX-1
N CX=0? Y yy←AL
结束
从一批数中求最大者流程图
第5章 汇编语言程序设计
DATA SEGMENT xx DB 49,38,65,12,97,13,55,27,28,85 yy DB ?
《微机原理与接口技术》课程总结
《微机原理与接口技术》课程总结本学期我们学习了《微型计算机原理与接口技术》,总的来说,我掌握的知识点可以说是少之又少,我感觉这门课的内容对我来说是比较难理解的。
这门课围绕微型计算机原理和应用主题,以Intel8086CPU为主线,系统介绍了微型计算机的基本知识、基本组成、体系结构、工作模式,介绍了8086CPU的指令系统、汇编语言及程序设计方法和技巧,存储器的组成和I/O接口扩展方法,微机的中断结构、工作过程,并系统介绍了微机中的常用接口原理和应用技术,包括七大接口芯片:并行接口8255A、串行接口8251A、计数器/定时器8253、中断控制器8259A、A/D(ADC0809)、D/A (DAC0832)、DMA(8237)、人机接口(键盘与显示器接口)的结构原理与应用。
在此基础上,对现代微机系统中涉及的总线技术、高速缓存技术、数据传输方法、高性能计算机的体系结构和主要技术作了简要介绍。
第一章:微型计算机概论(1)超、大、中、小型计算机阶段(1946年-1980年)采用计算机来代替人的脑力劳动,提高了工作效率,能够解决较复杂的数学计算和数据处理(2)微型计算机阶段(1981年-1990年)微型计算机大量普及,几乎应用于所有领域,对世界科技和经济的发展起到了重要的推动作用。
(3)计算机网络阶段(1991年至今)。
计算机的数值表示方法:二进制,八进制,十进制,十六进制。
要会各个进制之间的数制转换。
计算机网络为人类实现资源共享提供了有力的帮助,从而促进了信息化社会的到来,实现了遍及全球的信息资源共享。
第二章:80X86微处理器结构本章讲述了80X86微处理器的内部结构及他们的引脚信号和工作方式,重点讲述了8086微处理器的相关知识,从而为8086微处理器同存储器以及I/O设备的接口设计做了准备。
本章内容是本课程的重点部分。
第三章:80X86指令系统和汇编语言本章讲述了80X86微处理器指令的多种寻址方式,讲述了80X86指令系统中各指令的书写方式、指令含义及编程应用;讲述了汇编语言伪指令的书写格式和含义、汇编语言中语句的书写格式。
华电微机原理与技术汇编语言题目及答案
微机原理与接口技术汇编题目1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。
2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。
提示:1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H)DATA SEGMENTORG 2000HDB 1,,2,3,4,5,6,7,8,9,10 ; DB 定义字节数据ORG 3000HDB 10 DUP(O); 预留10个单元存放结果,初值预定义为0DATA ENDS定义的内存单元为:2、定义字数据命令为:DWDATA1 SEGMENTDW 1 , ,2 , 3, 4, 5, 6, 7, 8, 9, 10 ; DW 定义字数据DATA1 ENDS一个字为两个字节,在内存中低位在前,高位在后。
1已知0~15的平方值表,查表求X ( X是0到15间任一数)的平方值,送到Y单元,用两种方法。
2、已知0~255的平方值表,查表求X的平方值,送到Y单元。
提示:0到15的平方表,每个平方值为一个字节;0到255的平方表,每个平方值为2个字节;调试程序,平方表中的数据定义几个就行,目的是程序正确即可。
一个字为两个字节,在内存中低位在前,高位在后。
1计算多字节数据788H与99AABBCCDDEEFF00H和。
2、计算8字节的BCD码十进制数788H与H的和3、计算10个字数据的和(数据自己定义)。
提示;1、多字节数据在内存中存放,低位在前,高位在后DAT1 DB 88H,77H,66H,55H,44H,33H,22H,11HDAT2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99H DAT3 DB 9 DUP(O)二进制加法指令:ADDBCD十进制加法:ADD(4 )计算表达式的值1计算表达式Z ((X Y)*7)/(Y 2)的值,已知X=10, 丫=5。
提示:X DB 10Y DB 5Z DB ?AL=X-YBL=7AX=AL*BLBH=Y+2AL=AX/BH 的商AH=AX/BH的余数' -NniL无符号数乘法•JAmi有符号数乗法・例W I 讥-AX <- AL*DL1MHL BX : DX AX <-AX*BXMI L BYTE PTR[SI|; AX < AL*(DS* 16+STj(5)找最大、最小数1、找出2040H单元和2041H单元的大数,并送2042H单元(数据自己定义)2、找出10个数(8位数)里的最大数(数据自己定义)1、找出10个数(8位数)里的正数个数(数据自己定义)2、找出10个数(16位数)里的负数个数(数据自己定义)(7)数据块比较1、分别在FARD1和FARD2单元开始存放了10个字节数据,编程比较是否一义)。
微机原理与接口技术(楼顺天第二版)第四章习题解答
微机原理与接口技术(楼顺天第二版)习题解答第4章汇编语言程序设计4。
1、已知在BUF的起始处保存有N个字符的ASCII码,编写汇编语言程序实现,将这组字符串传送到缓冲区BUFR中,并且使字符串的顺序与原来的顺序相反。
答:BUF D B ”BONJOUR_BELLE"BUFR DB 100 DUP(?)MOV CX, NLEA SI, BUFLEA DI, BUFRADD DI,CXDEC DIL1:MOV AL,[SI]MOV [DI],ALINC SIDEC DILOOP L14。
2、利用移位、传送和相加指令实现AX的内容扩大10倍.答:将扩大后的结果放在DX:AX中,注意到10×AX=8×AX+2×AX。
XOR DX,DXSHL AX,1RCL DX,1MOV BX,AXMOV CX,DXSHL AX,1RCL DX, 1SHL AX, 1RCL DX, 1ADD AX, BXADC DX, CX4。
3、在缓冲区V AR中连续存放着3个16位的无符号数,编写程序实现将其按递增关系排列;如果V AR中保存的为有符号数,则再编写程序实现将其按递减关系排列。
答:V AR DW 1236,-432,3900XOR SI,,SIMOV AX,V AR[SI]CMP AX,V AR[SI+2]JAE L1XCHG AX,V AR[SI+2]L1:CMP AX, V AR[SI+4]JAE L2XCHG AX, V AR[SI+4]L2:MOV V AR[SI],AXMOV AX,V AR[SI+2]CMP AX,V AR[SI+4]JAE L3XCHG AX,V AR[SI+4]L3:MOV V AR[SI+2], AX4。
4、编写程序段实现将AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,则得到的(DX)=10110110 10011001B。
计算机0901,0902《微机原理与接口技术》课程实验教学大纲
《微机原理与接口技术》课程实验教学大纲课程编号:课程性质:专业必修课学分/学时:30/1先修/后续课程:计算机导论/计算机系统结构开课对象:计算机科学与技术专业课程简介:《微机与汇编语言》课程是计算机科学与技术专业重要的专业基础课,是学生学习掌握计算机硬件和软件(汇编语言)的入门课程。
一、教学任务和目的掌握典型微处理器的指令系统和运用汇编语言进行程序设计基本方法,是计算机科学与技术专业的一门专业核心课程之一,是突出计算机软件与硬件紧密结合、理论与实践相结合的一门课程。
微机原理与接口技术实验是微机原理与接口技术课程的重要组成部分。
本实验课程的教学目的和要求是使学生通过实验手段掌握微机接口的设计及其应用编程方法,也使学生系统科学地受到分析问题和解决问题的训练。
通过实验使学生对课程中的8253定时器,8255并行口,8259中断控制器,RAM6116,8251串行接口芯片,AD0809,AD0832的理解,能熟练掌握8253、8255、8251的编程与应用,促进对微机原理与接口技术理论课的学习。
二、教学基本要求要求学生掌握微机系统中主要部件(CPU、内存、I/O接口电路和总线等)的功能及连接方法;微处理器指令及其操作数的寻址方法;微机系统与外设之间I/O信息交换的基本方法;并进一步掌握典型微处理器的指令系统和运用汇编语言进行程序设计基本方法;掌握常用(可编程)I/O接口电路的性能特点和编程应用方法;了解计算机系统与外部设备的接口技术。
三、实验内容实验一DOS常用命令及8088/8086指令使用实验目的(1) DOS命令:CD、DIR、DEL、RENAME和C0PY。
(2) 8088指令:MOV,ADD、ADC、SUB、SBB、DAA和XCHG。
(3) DEBUG命令:A、D、E、F、H、R、T和U。
(4) BCD码、ASCII码及用十六进制数表示二进制码的方法。
(5) 8088寄存器:AX、BX、CX、DX、F和IP。
微机原理与接口技术(钱晓捷版)课后习题答案
微机原理与接口技术(钱晓捷版)课后习题答案“微机原理与接口技术”习题解答第1章微型计算机系统〔习题1.1〕简答题〔解答〕① 处理器每个单位时间可以处理的二进制数据位数称计算机字长。
② 总线信号分成三组,分别是数据总线、地址总线和控制总线。
③ PC机主存采用DRAM组成。
④ 高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器。
⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS 的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥ 中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑦ 主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路。
⑧ MASM是微软开发的宏汇编程序。
⑨ 指令的处理过程。
处理器的“取指—译码—执行周期” 是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
⑩ 机器语言层,即指令集结构。
(学生很多认为是:汇编语言层。
前4章主要涉及汇编语言,但本书还有很多处理器原理等内容)〔习题1.2〕判断题① 错② 错③ 对④ 错⑤ 对⑥ 错⑦ 错⑧ 对⑨ 错⑩ 错〔〔解答〕① Central Processing Unit,中央处理单元,处理器② 1MB,4GB ③ 216,64KB④ EXE,COM(BAT老师讲的)⑤ Instruction Set Architecture⑥ 目录⑦ MMX,SSE3 ⑧ 64⑨ IBM,DOS ⑩ PCI 〔习题1.4〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕CPU:CPU也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。
处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
第2章-微机原理、汇编与接口技术(第3版)-朱定华-清华大学出版社
2.1.2 标号
标号→指令地址的符号表示
1、 标号的三个属性 (1)段基址—定义该标号所在段的段首址的高16位 (2)偏移地址—标号所在段的段首址到该标号定义指令的
字节距离 (3)类型—NEAR和FAR两种 NEAR—段内调用,FAR—段间调用
7
2.1.2 标号
2 、标号的定义 标号只在代码段中定义和使用,定义的方式有两种: (1)书写在符号指令前,用:定义,为NEAR类型, NEAR型标号只能在段内使用! 例: CYCLE:MOV AL,[SI] ;定义近标号CYCLE
4
2.1.1 常量
(2)符号常量 程序中为经常使用的数值取的名。 用EQU或“=”伪指令定义,如:
P EQU 314 P=314
注:汇编时,汇编程序不给符号常量分配存储单元
5
2.1.1 常量
2、数值表达式 数字表达式——由常量与运算符组成的有意义的 式子,结果为一数值。
在汇编语言源程序中,允许对常量进行以下三种类型 的运算: (1)算术运算 包括+,-,×,/,MOD(求余) (2)逻辑运算 包括AND,OR,XOR,NOT (3)关系运算 包括:EQ(=),NE(≠),LT (<),GT(>),LE(≤),GE(≥)
;基址来初始化其变量
(5)由以上表达DB 1,2,3
B6 DB ’1,2,3’
; 此行的“,”不是序列分隔符
14
例 画出数据的存储形式
W1 DW B2 ;用B2的偏移地址初始化W1变量 B1 DB AB$ ;变量B1用A、B、$的ASCII码初始化 W2 DW 1994H D DD EW ;用变量EW的段基址和偏移地址初始化D B2 DB 2 DUP(-5,-1)
微机原理、汇编与接口技术
微机原理与接口技术(楼顺天)-第3章4资料讲解
3.5 算术运算类指令
(三)取负指令(NEG) Negate byte or word
格式:
NEG DST
;(DST) ←0-(DST)
说明:
DST可以取通用寄存器和存储单元。NEG指令
影响PSW中的6个状态标志位.
13
3.5 算术运算类指令
例如,设(AL)=01H,则执行指令 NEG AL 后,
5
3.5 算术运算类指令
例3.2 设在DVAR开始的连续8字节中分别存
放着两个数A和B(每个数为32位),求
C=A+B,并将结果C放到DVARC开始的内
存解中:。设这两个数分别为A=00127654H、
B=00049821H,则在数据段中有变量定义语
句:
DVAR DD 00127654H
DD 00049821H
SF=1,这说明-113<-104。 19
3.5 算术运算类指令
三、增量减量指令
格式:
INC DST
; (DST) ← (DST)+1
DEC DST
; (DST) ← (DST)-1
说明: INC和DEC指令可以正常影响PSW中的5个标志 位:AF、OF、SF、ZF和PF,但它们不会影响CF 位。
当两个有符号数进行比较时,OF=1表 示运算产生了溢出,但大小的比较要根据 OF和SF共同来决定,
当OFSF=0时,(DST)>(SRC), 当OFSF=1时,(DST)<(SRC)。
17
3.5 算术运算类指令
例: 两个无符号数(AL)=49H、(BL)= 28H进行大小比较。 解:指令段为:
MOV AL, 49H MOV BL, 28H CMP AL, BL 执行后,CF=0,ZF=0,说明49H>28H。 如果采用CMP BL,AL语句,则CF=1, 说明28H<49H。
微机原理与接口技术(习题答案)
源操作数:直接寻址;目的操作数:寄存器寻址
⑸ MOV [BX+SI+8], BX
源操作数:寄存器寻址;目的操作数:基址加变址寻址
2.若AX=0ABCDH,BX=7F8FH,CF=1。求分别执行8086 CPU指令
⑴ ADDAX,BX⑵ ADCAX,BX
⑶ SBBAX,BX⑷ NEGAX
⑶ JUM 2200H⑷ LESDI,[2100H]
⑸ MOV [BX+SI+8], BX
解答
⑴ MOV BX, WORD PTR[2200H]
源操作数:直接寻址;目的操作数:寄存器寻址
⑵ AAA
源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址
⑶ JUM 2200H
程序转移段内直接寻址方式
⑸ AND AX,BX⑹ ORAX,BX
⑺ XORAX, BX⑻ IMUL BL
后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。
解答
⑴ AX=2B5CH,SZAPCO=001110B
⑵ AX=2B5DH,SZAPCO=001010B
⑶ AX=2C3DH,SZAPCO=001001B
⑷ AX=5433H,SZAPCO=001110B
⑸ AX=2B8DH,SZAPCO=00X100B
⑹ AX=FFCFH,SZAPCO=10X100B
⑺ AX=D222H,SZAPCO=10X100B
⑻ AX=3283H,SZAPCO=XXXX11B
3.若AL=78H,BL=87H,
⑴求执行指令
ADD AL,BL
Jmp exit
P1: cmp NUMBER, Y
16/32位微机原理、汇编语言及接口技术 钱晓捷 第2版 课后习题答案
Sub ax word ptr buffer2 Mov dx word ptr buffer1+2 Sbb dx word ptr buffer2+2 (3) test dx,0F000H jz even even: mov ax,0 (4) mov cx,4 again: sar dx,1 rcr ax,1 loop again (5) mov cx,100 mov si,0 again: mov al,0FFH add al,array[si] mov array[si],al inc si loop again 2.21 Htoasc proc Mov bl,al Mov al,ah Mov bh,10 Mul bh And ax,00FFH Add al,bl Htoend: ret Htoasc endp 2.22 计算机系统利用中断为用户提供硬件设备驱动程序。在 IBM-PC 系列微机中,基本输入输 出系统 ROM-BIOS 和 DOS 都提供了丰富的中断服务程序,称为系统功能调用。 调用步骤(1)AH 中设置系统功能调用号 (2)在指定寄存器中设置入口参数 (3)使用中断调用指令执行功能调用 (4)根据出口参数分析调用情况 2.23 Htoasc proc And al,0FH Add al,90H
8
Numout 2.25 Msgkey Msgwrg
Again:
Disp:
Done:
Mov ah,09H Int 21H Jmp again mov ah,02H Mov dl,al Int 21H
第3章 3.1 解: 汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指 令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易 创建代码序列短小、运行快速的可执行程序 3.2 解: (1)完整的汇编语言源程序由段组成 (2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与 段之间的顺序可随意排列 (3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序 只有一个起始点 (4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任 一段内 (5)通常,程序还需要一个堆栈段 3.3 解: 存储模式 TINY SMALL COMPACT MEDIUM LARGE HUGE FLAT 特 点 COM 类型程序,只有一个小于 64KB 的逻辑段(MASM 6.x 支持) 小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于 64KB 代码少、数据多的程序,只有一个代码段,但有多个数据段 代码多、数据少的程序,可有多个代码段,只有一个数据段 大应用程序,可有多个代码段和多个数据段(静态数据小于 64KB) 更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制) 32 位应用程序,运行在 32 位 80x86CPU 和 Windows 9x 或 NT 环境
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试验五汇编子程序设计一、试验目的(1)掌握汇编子程序设计的一般方法;(2)掌握汇编子程序的调试方法;(3)掌握递归子程序设计与调试方法。
二、输入输出子程序1、十进制数输入子程序decibin子程序名:decibin子程序功能:用户输入十进制数放在BX中入口参数:无出口参数:BX存放输入的十进制数受影响的寄存器:AX、BX、CX、DX和标志寄存器注意:①用户输入字符‘0’~‘9’,当输入非法字符时结束输入,如回车;②十进制数位数可以是1位、2位等,范围0~65535。
decibin proc nearmov bx , 0newchar: mov ah , 1int 21hmov dl , alsub al , 30hjl exit1cmp al , 9jg exit1cbwxchg ax , bxmov cx , 10mul cxxchg ax , bxadd bx , axjmp newcharexit1: retdecibin endp2、十六进制数输入子程序hexibin子程序名:hexibin子程序功能:用户输入十六进制数放在BX中入口参数:无出口参数:bx存放输入的十六进制数受影响的寄存器:ax、bx、cx和标志寄存器注意:①用户输入0ah~0fh的数字时,输入大写字母‘A’~‘F’,小写字母‘a’~‘f’无效;②子程序不能控制数的位数可能0位、1位、2位……等位数,如果输入位数大于4位,则以最新的4位十六进制数为准;③输入字符可以按回车结束,当输入任何非法字符时也能结束数据输入。
hexibin proc nearmov bx , 0newchar: mov ah , 1int 21hsub al , 30hjl exitcmp al , 10jl add_tosub al , 7cmp al , 0ahjl exitcmp al , 10hjge exitadd_to: mov cl , 4shl bx , clmov ah , 0add bx , axjmp newcharexit: rethexibin endp3、十进制数显示子程序binidec子程序名:binidec子程序功能:将bx寄存器存放的数以十进制的形式显示出来入口参数:bx存放要显示的数出口参数:无受影响的寄存器:ax、bx、cx、dx和标志寄存器binidecdec_div图5-1 子程序binidec模块层次图binidec proc nearmov cx , 10000call dec_divmov cx , 1000call dec_divmov cx , 100call dec_divmov cx , 10call dec_divmov cx , 1call dec_divretbinidec endpdec_div proc nearmov ax , bxmov dx , 0div cxmov bx , dxmov dl , aladd dl , 30hmov ah , 2int 21hretdec_div endp4、十六进制数显示子程序binihex子程序名:binihex子程序功能:将di寄存器存放的数以十六进制的形式显示出来入口参数:di存放要显示的数出口参数:无受影响的寄存器:ax、bx、cx、dx和标志寄存器注意:显示十六进制数用到字符‘0’~‘9’和字符‘A’~‘F’,没有用到字符‘a’~‘f’。
binihex proc nearmov bx , 4lp: mov cl , 4rol di , clmov dx , diand dl , 0fhcmp dl , 9jbe nextadd dl , 07hnext: add dl , 30hmov ah , 2int 21hdec bxjnz lpmov dl , 'h'mov ah , 2int 21hretbinihex endp5、二进制数显示子程序binshow子程序名:binshow子程序功能:将bx寄存器存放的数以二进制的形式显示出来入口参数:bx存放要显示的数出口参数:无受影响的寄存器:ax、bx、cx、dx和标志寄存器binshow proc nearmov ah , 2mov cl , 16Again: shl bx , 1jnc nextmov dl , '1'push axint 21hpop axjmp mmNext: mov dl , '0'push axint 21hpop axmm: dec cljnz againretbinshow endp三、示例例5.1 显示学生分数等级编制一程序,要求接收从键盘输入的一个班级的学生成绩,并存放在50字的grade数组中。
然后根据grade中的学生成绩给出不同分数等级的学生人数,从终端中显示出来。
输入成绩用十进制,显示统计结果也用十进制数。
input decibin crlf rankp binidecdec_div main图5-2 程序模块层次图模块说明1、分数输入子程序input子程序名:input子程序功能:用户输入若干十进制数,放在grade内存变量中入口参数:无出口参数:grade变量中存放输入若干数据;count变量中记录数据个数受影响的寄存器:ax、dx、si和标志寄存器注意:①由于数据存放在字单元中,范围0~65535,无符号数;②数据间用逗号隔开,如87,75,95,63,90……如果用户输入87,回车,则子程序会出错,变量count统计的数据个数不对,注意逗号后一定跟上数据;③若干数据输入以回车结束或非法字符结束,如果用户输入非法字符,给出'Input Error!'提示;④定义变量 grade dw 50 dup(?)count dw ?mess1 db 'Grade?','$'mess2 db 13,10,'Input Error!',13,10,'$'⑤输入数据个数最多50个。
inputdecibin crlf图5-3 子程序input模块层次图2、统计分数子程序rankp子程序名:rankp子程序功能:将内存中存放的分数按照<60、60∽69、70∽79、80∽89、90以上统计出来,存放在变量中入口参数:CX要统计分数的个数;BX指示统计分数的首地址出口参数:统计结果存放在变量s10、s9、s8、s7、s6、s5中受影响的寄存器:ax、bx、cx和标志寄存器注意:变量s10、s9、s8、s7、s6、s5的初值应为0编程思路根据题目的要求,程序可由三部分组成:(1)输入:以十进制的形式输入班级中的学生分数;(2)统计:根据不同的等级统计学生人数;(3)输出:显示统计结果,以十进制显示。
该例中明显的特色是子程序的调用,图5-2显示了子程序间嵌套调用的关系,一般复杂的程序都是由子程序嵌套调用完成的。
在设计每一个子程序中要明确子程序的功能、入口参数、出口参数,子程序运行时应该注意的细节,其中包括子程序实现中缺陷、程序结束的条件、数据输入的范围等。
外加还要清楚子程序中对寄存器的影响,必要的时候可以利用堆栈或者内存变量保存寄存器的值。
复杂的程序一般都由若干子程序嵌套调用,调用时的层次关系也应该好好设计。
调用子程序前一般要对入口参数进行设置,然后调用子程序。
在本例中,调用子程序rankp,完成对学生分数进行统计,入口参数bx指示存放学生分数变量grade 的首地址,变量cx为分数的个数,指令语句如下:lea bx , grademov cx , countcall rankp参考程序清单datarea segmentgrade dw 50 dup(?)count dw ?s10 dw 0s9 dw 0s8 dw 0s7 dw 0s6 dw 0s5 dw 0mess1 db 'Grade?','$'mess2 db 13,10,'Input Error!',13,10,'$' mess100 db 13,10,'100 mark number:$'mess90 db 13,10,'90 mark number:$'mess80 db 13,10,'80 mark number:$'mess70 db 13,10,'70 mark number:$'mess60 db 13,10,'60 mark number:$'mess50 db 13,10,'no pass number:$' datarea endsprognam segmentmain proc farassume cs: prognam,ds:datareastart:mov ax , datareamov ds , axcall inputlea bx , grademov cx , countcall rankplea dx , mess100mov ah , 09int 21hmov bx , s10call binideclea dx , mess90mov ah , 09int 21hmov bx , s9call binideclea dx , mess80mov ah , 09int 21hmov bx , s8call binideclea dx , mess70mov ah , 09int 21hmov bx , s7call binideclea dx , mess60mov ah , 09mov bx , s6call binideclea dx , mess50 mov ah , 09int 21hmov bx , s5call binidecmov ah , 4chint 21hmain endpbinidec proc nearmov cx , 10000 call dec_divmov cx , 1000 call dec_divmov cx , 100call dec_divmov cx , 10call dec_divmov cx , 1call dec_divretbinidec endpdec_div proc nearmov ax , bxmov dx , 0div cxmov bx , dxmov dl , aladd dl , 30hmov ah , 2int 21hretdec_div endpinput proc nearlea dx , mess1 mov ah , 09int 21hmov si , 0mov count , 0 enter: call decibininc countcmp dl , ','cmp dl , 13je exit2jne errorstore: mov grade[si] ,bxadd si , 2jmp entererror: lea dx , mess2 mov ah , 09int 21hexit2: mov grade[si] ,bxcall crlfretinput endpdecibin proc nearmov bx , 0 newchar: mov ah , 1int 21hmov dl , alsub al , 30h jl exit1cmp al , 9jg exit1cbwxchg ax , bxmov cx , 10mul cxxchg ax , bxadd bx , axjmp newcharexit1: retdecibin endprankp proc nearcompare: mov ax , [bx] cmp ax , 60jl fivecmp ax , 70jl sixcmp ax , 80jl sevencmp ax , 90jl eightcmp ax , 100 jne ninejmp change_addrnine: inc s9jmp change_addreight: inc s8jmp change_addrseven: inc s7jmp change_addrsix: inc s6jmp change_addrfive: inc s5change_addr: add bx , 2loop compareretrankp endpcrlf proc nearmov dl , 0ahmov ah , 02hint 21hmov dl , 0dhmov ah , 02hint 21hretcrlf endpprognam endsend start图5-4 程序运行结果程序调试我们说一说由子程序构成的程序的调试过程。