微机原理汇编语言实例及习题
微机原理习题课_1
提示:一个正数与负数相加,结果肯定不溢出
10
三、汇编指令 •汇编语言有三种基本语句:指令语句、伪指令语句、宏指令语句。 •指令语句=操作指令+操作数(可隐含) 汇编器如何找到操作数——寻址方式: (1)在数据存储器中,指令中如何提供操作数或操作数地址的方式。 (2)在程序存储器中,程序转移时需提供转移地址,这也称为寻址。
短标号,即位移量在-128~127的范围内。
注意:在编制大的循环程序时要注意跳转范围的限制问题,否则会出现以下的编译问题。
因此要求在编制程序时要做到短小精悍,简洁易读 提示:条件转移指令往往与逻辑指令,移位指令,CMP等指令相配合。
28
习题3.2
若WORD1及WORD2均为字变量,ADDITION为标号,请说明下列指令的错误之处:
12
例题 要点:理解各段与寄存器的概念,正确使用寻址方式。
例: (1)直接、间接、立即三种寻址方式的执行速度由快至慢依次为:
(2)下列指令中立操即作、数直在接代、码间段接中的是
A.MOV AL,25H
B.ADD AL,BH
C.CMP AX,[BP]
D.INC DS:[BP]
A
13
要点1:寄存器不能随便使用
若已知下一条指令到所跳转地址的相对位移量–128~+127,则可用标号SHORT
➢可以不定义SHORT NEXT:
… JMP NEXT
➢必须定义SHORT JMP SHORT NEXT …
NEXT: …
24
③段内间接转移:16位相对位移量 JMP reg或JMP mem MOV BX, 1000H JMP BX JMP WORD PTR [BX+20H] ④段间直接转移:32位相对位移量(CS:IP) JMP FAR PTR label, ⑤段间间接转移:32位相对位移量(CS:IP), JMP mem MOV SI, 0100H JMP DWORD PTR [SI]
《微机原理》第04章 习题
习题1 习题
1.编写 编写8086汇编语言程序 , 将寄存器 的高 位传 汇编语言程序, 的高8位传 编写 汇编语言程序 将寄存器AX的高 送到寄存器BL, 位传送到寄存器DL 送到寄存器 ,低8位传送到寄存器 位传送到寄存器
习题2 习题
2.将寄存器 的内容从低到高位的顺序分成 组 , 将寄存器DX的内容从低到高位的顺序分成 将寄存器 的内容从低到高位的顺序分成4组 并将各组数分别送到寄存器AL,BL,CL和 DL( 如 并将各组数分别送到寄存器 和 ( DX=6D82H,分成:06H、0DH、08H、02H)。 ,分成: 、 、 、 )
MOV AX,MEN MOV BX,AX SHR AX,1 JC PO_1 MOV MEMB,BX JMP DONE PO_1: MOV MEMA,BX : DONE:
习题4 习题
4.试统计 个数中偶数的个数,并将结果在屏幕显示 试统计9个数中偶数的个数 试统计 个数中偶数的个数,
SI BUFF 3BH 47H 8DH -75 0A4H 69H -2EH 0CCH 200 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H
逻辑左移
CF
0 1 XXX XXXX 0 XXX XXXX
SHL AL,1 ADC DL,0
ADC指令实现 指令实现DL+CF+0 指令实现 如果是负数, 为 , 个数记录加1 如果是负数,CF为1,则DL个数记录加 个数记录加
DATA SEGMENT BUFF DW 6700H,9E00H,-6A00H,0A0BH,6D00H NUM DB $-BUFF MEM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA , START:MOV AX,DATA MOV DS,AX MOV CX,NUM LEA BX,BUFF
16、32位微机原理、汇编语言和接口技术教程课后习题答案解析
《16/32 位微机原理、汇编语言及接口技术教程》部分习题参考解答第1 章微型计算机系统概述〔习题1.2 〕什么是通用微处理器、单片机(微控制器)、芯片、嵌入式系统?〔解答〕通用微处理器:适合较广的应用领域的微处理器,例如装在机、笔记本电脑、工作站、服务器上的微处理器。
单片机:是指通常用于控制领域的微处理器芯片,其内部除外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。
芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。
嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。
〔习题1.5 〕说明微型计算机系统的硬件组成及各部分作用。
〔解答〕:也称处理器,是微机的核心。
它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。
存储器:存储器是存放程序和数据的部件。
外部设备:外部设备是指可与微机进行交互的输入()设备和输出()设备,也称设备。
设备通过接口与主机连接。
总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。
习题1.6 〕什么是总线?微机总线通常有哪3 组信号?各组信号的作用是什么?〔解答〕总线:传递信息的共用通道,物理上是一组公用导线。
3 组信号线:数据总线、地址总线和控制总线。
(1)地址总线:传输将要访问的主存单元或端口的地址信息。
(2)数据总线:传输读写操作的数据信息。
(3)控制总线:协调系统中各部件的操作。
习题1.7 〕简答如下概念:(1)计算机字长(2)取指-译码-执行周期(3)(4)中断(5)总线解答〕(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。
(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
微机原理---汇编语言习题(完整参考答案)
微机原理---汇编语⾔习题(完整参考答案)MIS 硬件原理复习内容1.数的不同进制转换,原码、反码、补码转码,BCD码2.掌握D触发器逻辑3.D触发器组成的电路:卡诺图及简化、真值表、波形图、状态转换图4.三态门、总线结构5.存储器扩展⽅法:地址总线的作⽤,内存分页技术,地址译码⽅法,译码器6.86X 系列CPU 结构框图7.8086寄存器组,寻址⽅式8.指令,伪指令9.数据定义,完整程序结构10.汇编语⾔上机及调试过程1.分别指出下列指令中的源操作数和⽬的操作数的寻址⽅式:(1)MOV SI, 200(2)MOV CX, DA TA[SI](3)ADD AX, [BX][DI](4)AND AX, BX(5)PUSHF2.指出指令MOV AX, 2010H 和MOV AX, DS:[2010H]的区别3.写出以下指令中内存操作数的所在地址(1)MOV AL, [BX+5](2)MOV [BP+5], 5(3)INC BYTE PTR[SI+3](4)MOV DL, ES:[BX+DI](5)MOV BX, [BX+SI+2]4.判断下列指令书写是否正确(1)MOV DS, 0100H (错)(2)MOV AL, BX (错)(3)MOV BL, F5H (错)(4)MOV DX, 2000H (对)(5)INC [BX] (对)(6)MOV 5, AL (错)(7)MOV [BX], [SI] (错)5.若SP=2000H, AX=3355H, BX=4466H, 试指出执⾏下列指令后有关寄存器的值:(1)PUSH AX;执⾏后AX=? SP=? (AX=3355H SP=1FFEH)(2)PUSH AXPUSH BXPOP DX;执⾏后AX=? DX=? SP=?(AX=3355H DX=4466H SP=1FFEH)6.假设想从100中减去AL中的内容,⽤SUB 100, AL是否正确?如果不对,应⽤什么⽅法?7.有如下程序,当AL某位为何值时,可将程序转⾄AGIN2语句。
微机原理实验编程题(完整)
1)(正确)比较两个无符号数的大小(量个数放在内存S3的连续两个单元中),将大数存入MAX单元中。
DATAS SEGMENTBUF DB 1,2CNT EQU $-BUFDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV CX,CNT-1LEA BX,BUFMOV AL,[BX]L2: INC BXCMP AL,[BX]JAE L1MOV AL,[BX]L1:LOOP L2ADD AL,30H- 1 - / 16MOV DL,ALMOV AH,2INT 21HMOV AH,4CHINT 21HCODES ENDSEND STAR2)(正确)试编一程序,求三个带符号数据中的最大值,并将最大值存入MAX单元中,设三个带符号数分别在三个变量X,Y,Z中存储。
DATAS SEGMENTX DB 5Y DB-2Z DB 0MAX DB?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AL,XMOV BL,YCMP AL,BLJG L1MOV AL,BLL1:MOV BL,ZCMP AL,BLL2: MOV MAX,ALMOV AH,4CHINT 21HCODES ENDSEND START3)(正确)根据MODE单元中编号0-7分别转向L0-L7标号处,执行L0-L7处分别完成显示‘0-7’字符,即当MODE=0时,转向L0标号,完成显示‘0’,当MODE=7时,转向L7标号,完成显示‘7’。
DATAS SEGMENTMODE DB 0DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:- 3 - / 16MOV AX,DATASMOV DS,AXMOV AL,MODECMP AL,0JZ L0CMP AL,1JZ L1CMP AL,2JZ L2CMP AL,3JZ L3CMP AL,4JZ L4CMP AL,5JZ L5CMP AL,6JZ L6MOV DL,'7'MOV AH,02HINT 21HJMP L8L0:MOV DL,'0'MOV AH,02HINT 21HJMP L8L1:MOV DL,'1'MOV AH,02HINT 21HJMP L8L2:MOV DL,'2'MOV AH,02HINT 21HJMP L8L3:MOV DL,'3'MOV AH,02HINT 21HJMP L8L4:MOV DL,'4'- 5 - / 16MOV AH,02HINT 21HJMP L8L5:MOV DL,'5'MOV AH,02HINT 21HJMP L8L6:MOV DL,'6'MOV AH,02HINT 21HJMP L8L8:MOV AH,4CHINT 21HCODES ENDSEND START4)(正确)根据输入值(0-4)的不同,执行不同的操作,用转移标法编写程序。
微机原理与汇编语言实验循环程序设计实验
微机原理与汇编语言实验报告姓名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.1计算机的发展到目前为止经历了几个时代?每个时代的特点是什么?1.2计算机的特点表现在哪些方面?简述计算机的应用领域。
1.3冯·诺依曼型计算机的结构由哪些部分组成?各部分的功能是什么?分析其中数据信息和控制信息的流向。
1.4计算机中的CPU由哪些部件组成?简述各部分的功能。
1.5微型计算机系统主要由哪些部分组成?各部分的主要功能和特点是什么?1.6微型计算机的分类方法有哪些?1.7 什么是微型计算机的系统总线?定性说明微处理器三大总线的作用。
1.8 微型计算机的总线标准有哪些?怎样合理地加以选择?1.9 简述微型计算机的主要应用方向及其应用特点。
1.10 奔腾系列微处理器有哪些特点?与其它微处理器相比有哪些改进?1.11 解释并区别下列名词术语的含义。
(1)微处理器、微计算机、微计算机系统(2)字节、字、字长、主频、访存空间、基本指令执行时间、指令数(3)硬件和软件(4)RAM和ROM(5)机器语言、汇编语言、高级语言、操作系统、语言处理程序、应用软件(6)CMOS、BIOS、Cache芯片1.12 微型计算机系统软件的主要特点是什么?它包括哪些内容?1.12 定性比较微型计算机的内存储器和外存储器的特点及组成情况。
第二章思考题与习题2.1 简述计算机中“数”和“码”的区别,计算机中常用的数制和码制有哪些?2.2 将下列十进制数分别转化为二进制数、八进制数、十六进制数和压缩BCD数。
(1)125.74 (2)513.85 (3)742.24(4)69.357 (5)158.625 (6)781.6972.3 将下列二进制数分别转化为十进制数、八进制数和十六进制数。
(1)101011.101 (2)110110.1101(3)1001.11001 (4)100111.01012.4 将下列十六进制数分别转化为二进制数、八进制数、十进制数和压缩BCD数。
(1)5A.26 (2)143.B5(3)6AB.24 (4)E2F3.2C2.5 根据ASCII码的表示,查表写出下列字符的ASCII码。
(完整版)华电微机原理与技术汇编语言题目及答案
(完整版)华电微机原理与技术汇编语⾔题⽬及答案⼀微机原理与接⼝技术汇编题⽬(1)数据块传送1、将数据段中2000H单元开始存放的10个数(8位数)传送到3000H开始的10个字节中。
2、将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。
提⽰:1、指定数据的起始地址:(如果不指定起始地址,则起始地址为0000H)DA TA SEGMENTORG 2000HDB 1,,2,3,4,5,6,7,8,9,10 ; DB定义字节数据ORG 3000HDB 10 DUP(0); 预留10个单元存放结果,初值预定义为0DA TA ENDS定义的内存单元为:2、定义字数据命令为:DWDA TA1 SEGMENTDW 1,,2,3,4,5,6,7,8,9,10 ; DW定义字数据DA TA1 ENDS1、已知0~15的平⽅值表,查表求X(X是0到15 间任⼀数)的平⽅值,送到Y单元,⽤两种⽅法。
2、已知0~255的平⽅值表,查表求X的平⽅值,送到Y单元。
提⽰:0到15的平⽅表,每个平⽅值为⼀个字节;0到255的平⽅表,每个平⽅值为2个字节;调试程序,平⽅表中的数据定义⼏个就⾏,⽬的是程序正确即可。
⼀个字为两个字节,在内存中低位在前,⾼位在后。
1、计算多字节数据1122334455667788H与99AABBCCDDEEFF00H的和。
2、计算8字节的BCD码⼗进制数1122334455667788H与9988776655443322H的和3、计算10个字数据的和(数据⾃⼰定义)。
提⽰;1、多字节数据在内存中存放,低位在前,⾼位在后DA T1 DB 88H,77H,66H,55H,44H,33H,22H,11HDA T2 DB 00H,0FFH,0EEH,0DDH,0CCH,0BBH,0AAH,99HDA T3 DB 9 DUP(0)2、BCD⼗进制加法⼆进制加法指令: ADDBCD⼗进制加法: ADDDAA;⼗进制调整指令,仅对AL 作为加法的累加和寄存器进⾏调整(4)计算表达式的值1 计算表达式)2/()7*)((+-=Y Y X Z 的值,已知X=10,Y=5。
《微机原理、汇编语言与接口技术》韩晓茹(习题解答全套
地址总线AB是专门用来传送地址的,地址总线总是单向三态的。
控制总线CB用来传送控制信号和时序信号,制总线的传送方向由具体控制信号而定。
1.4衡量微型计算机系统的性能的指标有哪些?
答:衡量微型计算机系统的性能的指标有字长、主频、运算速度和主存容量和存取速度。字长是指微机系统中CPU一次能处理的二进制位数。CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。运算速度是指每秒钟所能执行的指令条数。主存储器容量指内部存储器能存放数据的最大字节数。存取速度指主存完成一次读/写所需要的时间。
2.3简述伪指令“EQU”与“=”之间有什么区别?
解:“EQU”伪指令不能重复定义,而“=”伪指令可以重复定义。
2.4画图说明下列语句分配的存储空间及初始化的数值
(1)FF1DB'0100',2+5,?,'ABC'
(2)FF2DW2 DUP(?),'A','BC',1000H,25H
(3)FF3DB2 DUP(1,2 DUP(2,3),4)
(3)LEA BX, BLOCK
MOV SI, 99*2
MOV AX,[BX+SI]
或:
LEA SI, BLOCK
MOV BX, 99*2
MOV AX,[BX+SI]
2.9已知:(BX)=1200H,(BP)=2400H,(SI)=0100H,(DI)=0200H,(SS)=1000H,(DS)=2000H,(ES)=3000H,变量VAR1对应地址为2000H,试分别指出下列指令中存储器的寻址方式及物理地址。
2.28086/8088 CPU中标志寄存器有哪两类标志?简述各标志位的含义。
微机原理练习七 编程应用题
微机原理练习七编程应用题1. 编写8086汇编语言程序片段,完成将数据段中偏移地址为1000H单元中的一个字数据的高8位传送至寄存器AL,低8位传送至寄存器DL。
2 请用2种不同的方法写出程序段,完成将源操作数(SRC)和目的操作数(DST)互换。
3分别用2种不同的方法完成在字存储单元DB1中存储数据2000H的操作(提示:分别用指令语句和伪指令语句)。
4 判断MEM单元的数据,编程将奇数存入MEMA单元,将偶数存入MEMB单元。
(提示:如果一个数的最低位为1,则该数为奇数,否则为偶数。
仅编写程序段)5 编一个程序段,数据段有100个无符号字节数据块BUF,试找出其中最小的数并放入MIN单元中(注:不低于/高于等于条件转移指令为JNB)。
6.编一个程序段。
数据段有100个无符号字节数据块BUF,试找出其中数值为0的数据个数并放入ZERO单元中(注:结果不为零条件转移指令为JNZ)。
7. 在数据段BUF开始的连续10个单元中存放有10个无符号数,编程找出其中的最大值放入MAX单元中。
(提示:低于/不高于等于条件转移指令为JB,仅编程序段)8.在数据段BUF开始的连续10个单元中存放有10个无符号数,编程求出它们的和并放入SUM单元中。
(提示:假设结果不溢出,仅编程序段)参考答案1.编写8086汇编语言程序片段,完成将数据段中偏移地址为1000H单元中的一个字数据的高8位传送至寄存器AL,低8位传送至寄存器DL。
MOV BX,1000HMOV DL,[BX]INC BXMOV AL,[BX]HLT2.请用2种不同的方法写出程序段,完成将源操作数(SRC)和目的操作数(DST)互换。
① MOV AX,SRCMOV BX,DSTXCHG AX,BXMOV SRC,AXMOV DST,BX② MOV AX,SRCMOV BX,DSTMOV SRC,BXMOV DST,AX③ PUSH WORD PTR [SRC]PUSH WORD PTR [DST]POP WORD PTR [SRC]POP WORD PTR [DST]3.分别用2种不同的方法完成在字存储单元DB1中存储数据2000H的操作(提示:分别用指令语句和伪指令语句)。
微机原理及接口技术 例题3个
▪汇编语言源程序结构(P151数据段名SEGMENT 堆栈段名SEGMENT…数据段名ENDS 堆栈段名ENDS附加段名SEGMENT 代码段名SEGMENT…附加段名ENDS 代码段名ENDSEND【例4-1】已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。
DATA SEGMENTX DB 15Y DB 34Z DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX ;初始化数据段MOV AL,X ;X中的内容送ALMUL AL ;计算X×XMOV BX,AX ;X×X乘积送BXMOV AL,Y ;Y中的内容送ALMUL AL ;计算Y×YADD AX,BX ;计算X2+Y2 (这里的五个2是平方)SHR AX,1 ;计算(X2+Y2)/2MOV Z,AX ;结果送Z单元MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START ;汇编结束▪例:8086系统工作于最小模式下时,用64K×8的SRAM芯片构成128K×8的存储体,要求该存储体所占地址空间为00000H~1FFFFH。
画出数据线、地址线及有关控制信号的连接方法。
1、扩展存储器的数据线,地址线2、选用几片3、根据地址范围写出所有地址线,弄清楚哪些作为高地址线,哪些作为低地址线4、8086考虑奇偶地址,A0,BHE5、画出CPU,存储器芯片,连接数据线,读写控制逻辑,低地址线(片内地址线)6、根据高位地址线的状态接逻辑门或138译码器到片选信号输入端。
例8086系统扩展8255并行接口,其数据线接8086CPU数据线低8位,PA口接输出设备,PB口接输入设备,PC.7~PC.4 连接四个开关,由8086CPU将开关状态取入,然后根据开关状态去控制PC.3~PC.0驱动四个发光二极管(高电平亮,低电平灭)。
微机原理实验(含解答程序)
微机原理实验(含解答程序)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN微机原理实验课题(共16个内容,附解答程序)(汇编程序可以使用MASM FOR WINDOWS)1.将偏移地址为2000h开始的100个单元依次设置为0~99。
2.将两个64位的二进制数相加,记录相加的和以及各个状态标志的值。
3. 编写程序,在屏幕上分行显示自己的姓名、学号。
4. 编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。
在DEBUG下查看执行结果。
5. 用分支结构设计程序实现符号函数100010xy xx>⎧⎪==⎨⎪-<⎩,要求x和y存放在内存单元中,并将判断的结果在屏幕上显示输出。
6. 在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
7. 在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
8. 将字节型变量x的低四位(一位十六进制数)以十六进制数的形式显示。
9. 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N (N+1)大于200为止,并将结果由屏幕上显示出来。
10. 将字形变量x以二进制数的形式在屏幕上显示输出。
11. 将字形变量x以十六进制数的形式在屏幕上显示输出。
12. 将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显示。
13. 编制程序计算S=1+2+3+……+N,并将结果由屏幕上显示出来。
(要求:在屏幕上显示提示信息,提示输入N,N用十六进制表示,且N小于0FH,用子程序实现(段内),将输入的结果用十六进制数输出显示,显示结果的程序用子程序是实现(段间))。
14.要求在键盘上输入一个小于四位的十进制数,将其转换为二进制数存放,并讲转换后的结果以十六进制数的形式在屏幕上显示出来。
微机原理及汇编语言课后习题解答
微机原理与汇编语言课后习题解答第1章计算机基础知识1.微处理器、微型计算机和微型计算机系统三者之间有什么不同?2.为什么把微型计算机的基本结构说成是总线结构?3.试说明字节和字长的概念。
4.CPU在内部结构上由哪几部分组成?CPU应具备哪些主要功能?5.为什么把微型计算机的基本结构说成是总线结构?6.微型计算机采用总线结构有什么优点?7.____________是以CPU为核心,加上存储器、I/O接口和系统总线组成的。
A.微处理器 B.微型计算机 C.微型计算机系统8.堆栈指针的作用是用来指示______________。
A.栈底地址 B.栈顶地址 C.下一条要执行指令的地址9.在微程序控制器中,机器指令与微指令的关系是________________。
A.每条机器指令对应一条微指令B.一段由机器指令编成的程序由一条微指令来执行C.每条机器指令由一段微指令编成的微程序来解释执行10.计算机内的“溢出”是指其运算的结果_________________。
A.为无穷大B.超出了计算机内存储单元所能存储的数值范围C.超出了该指令所指定的结果单元所能存储的数值范围11.程序计数器(PC)的位数取决于____________。
A.存储器的容量 B.指令字长 C.机器字长12.8位补码操作数“10010011”等值扩展为16位后,其机器数为_________。
A.1111111110010011 B.0000000010010011 C.100000001010011 13.计算机的字长越长,一个字所能表示的数据精度就越高;在完成同样精度的运算时,则处理速度______。
A.越高 B.越低 C.不一定14.具有指令流水线结构的CPU,一般情况下指令的执行时间主要取决于______。
A.指令执行的步骤 B.CPU有无等待状态C.CPU的时钟周期 D.CPU内的Cache存储器大小15.将下列十进制数分别转化为二进制数、十六进制数和压缩BCD码。
微机原理-实验一-汇编语言-冒泡排序
微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验一汇编语言程序设计-(具体题目)一、实验目的(根据实际情况修改):1、熟悉MASM编译环境,了解程序的汇编方法;2、熟悉常用汇编指令,学习汇编程序设计方法;3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式;4、了解冒泡法原理,学习多重循环的编程方法。
二、实验内容:编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。
三、程序流程图和程序代码1、流程图2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)data segmentbuf1 db 8,7,6,5,4,3,2,1data endscode segmentassume cs:code,ds:datastart: mov ax,data //传送数据段datamov ds,axmov dx,7 //dx放外循环7次L3: mov cx,dx //cx放内循环7次lea si,buf1 //将db里的数据传送到siL2: mov al,[si]cmp al,[si+1] //比较[si]与[si+1]jb L1 //[si]<[si+1],跳转到L1xchg al,[si+1] //[si]>[si+1],两两交换mov [si],alL1: inc si //si减1loop L2 //循环L2dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值mov ah,4chint 21hcode endsend start四、调试过程及遇到的问题1、程序执行截图2、调试用到的命令-U命令:查看数据段地址;-d命令:查看运行前后存储器内容;-g命令:运行程序;-t命令:查看运行前后寄存器和存储器内容。
3、遇到的问题及解决办法问题:运行程序后,数据1在存储器地址末尾没变。
微机原理与汇编语言程序设计课后习题参考答案
第一章习题与参考答案之蔡仲巾千创作1. 微处理器,微型计算机和微型计算机系统三者之间有何区别?答:微处理器即CPU,它包含运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包含硬件系统和软件系统两大部分,其中硬件系统又包含微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。
2. CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能?答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
3. 累加器和其它通用寄存器相比有何分歧?答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。
累加器除了可用做通用寄存器存放数据外,对某些操纵,一般操纵前累加器用于存放一个操纵数,操纵后,累加器用于存放结果。
4. 微型计算机的总线有哪几类?总线结构的特点是什么?答:微型计算机的总线包含地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。
5. 举出10个微型计算机应用的例子。
答:略6. 计算机I/O接口有何用途?试列出8个I/O接口。
答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。
例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。
7. 现在,计算机主板上一般都包含哪些I/O接口?I/O接口卡如何与主板相连?答:现在,计算机主板上一般包含串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。
微机原理与汇编语言课后习题含
微机原理与汇编语言课后习题答案【篇一:微机原理、汇编语言与接口技术周杰英张萍习题答案汇总】与参考答案(部分)1. 把下列二进制数转换成十进制数、十六进制数及 bcd 码形式。
(1) 10110010b =(2) 01011101.101b =解:(1) 10110010b = 178d = b2h = (0001 0111 1000(2)= (1001 0011.0110 0010 0101 )bcd2. 把下列十进制数转换成二进制数。
(1) 100d =(2) 1000d =(3) 67.21d =解:(1) 100d = 01100100b(2)1000d = 1111101000b(3)3. 把下列十六进制数转换成十进制数、二进制数。
)bcd (1) (2)解: 2b5h = 4cd.a5h =(1) 2b5h = 693d = 0010 1011 0101b(2) 0 0101 b4. 计算下列各式。
(1) a7h+b8h =(2) e4h-a6h =解:(1) a7h+b8h = 15fh(2) e4h-a6h = 3eh5. 写出下列十进制数的原码、反码和补码。
(1) +89(2) -37解:(1) [+89 ] 原码、反码和补码为 : 01011001b(2) [-37] 原码 = 10100101 b[-37] 反码 = 11011010 b[-37] 补码 = 11011011 b6.求下列用二进制补码表示的十进制数(1)(01001101 )补 =(2)(10110101 )补 =解:(1)(01001101 )补 = 77d(2)(10110101 )补 = -75d7.请用 8 位二进制数写出下列字符带奇校验的 ascii 码。
(1)c: 1000011 (2)o: 1001111(3)m: 1001101 (4)p: 1010000解:(1)c:0 1000011 (2)o: 0 1001111(3)m:1 1001101 (4)p: 1 10100008.请用 8 位二进制数写出下列字符带偶校验的 ascii 码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
假设下列指令中的所有标识符均为类型属性为字 的变量,请指出下列指令中哪些是非法的?它们的 错误是什么? (1)MOV BP,AL (2)MOV WORD_OP[BX+4*3][DI],SP (3)MOV WORD_OPl,WORD_OP2 (4)MOV AX,WORD_OPl[DX] (5)MOV SP,SS:DATA_WORD[BX][SI] (7)MOV [BX][SI],2 (8)MOV AX,WORD_ OPl+WORD_OP2
L2:
ห้องสมุดไป่ตู้
CMP JA INC JMP L3: CMP JA INC NEXT:ADD LOOP EXIT:MOV INT CODE END
AX, 84 L3 N2 NEXT AX, 100 NEXT N3 SI, 2 AGAIN AX, 4C00H 21H ENDS START
解:(1) MOV AX,SEG DATA1 MOV DS,AX MOV AX,SEG DATA2 MOV ES,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD REP MOVSB
(2) LEA SI,DATA1 LEA DI,DATA2 MOV CX,20 CLD REPE CMPSB 。。。
START
4.17 数组SCORE中存有一个班级40名学生的英语 课程成绩。按照0~59,60~74,75~84,85~100统 计各分数段人数,存入N0,N1, N2, N3变量内。 DATA SEGEMNT SCORE DW 40 DUP(?) ;运行前置入具体数据 N0 DW ? N1 DW ? N2 DW ? N3 DW ? DATA ENDS
(3) LEA SI,DATA1 ADD SI,2 LODSW
(4)LEA DI,DATA2 ADD DI,5 STOSW
编写循环结构程序,进行下列计算,结果 存入RESULT内存单元 1+2+3+4+5+6+ …… +100 1+3+5+7+9+11+ …… +99 2+4+6+8+10+ …… +100 1+4+7+10+13+ …… +100 11+22+33+44+ …… +99
CODE ASSUME START:MOV MOV MOV MOV MOV MOV LEA MOV AGAIN:MOV CMP JA L0: INC JMP L1: CMP JA INC JMP
SEGMENT CS: CODE, DS: DATA AX, DATA DS, AX N0, 0;各计数器清零 N1, 0 N2, 0 N3, 0 SI, SCORE CX, 40 AX, [SI] AX, 59;分段测试 L1 N0 NEXT AX, 74 L2 N1 NEXT
(5)
CODE SEGMENT ASSUME START: XOR MOV MOV AGAIN: ADD ADD LOOP MOV MOV INT CODE ENDS END
CS: CODE AX, AX CX, 9 BX, 11 AX, BX BX, 11 AGAIN RESULT, AX AX, 4C00H 21H
(2)
CODE SEGMENT ASSUME CS: CODE START: XOR AX, AX MOV CX, 50 MOV BX, 1 AGAIN: ADD AX, BX ADD BX, 2 LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START
(1)
CODE
SEGMENT ASSUME CS: CODE START: XOR AX, AX MOV CX, 100 AGAIN: ADD AX, CX LOOP AGAIN MOV RESULT, AX MOV AX, 4C00H INT 21H CODE ENDS END START
数组ARRAY中存有10个无符号字整数(元素序号0~9),现在要删除其中的 第5个元素。编写程序,把第6~9个元素移到第5~8个元素的位置上,并把第9 个元素清零。 答: DATA SEGEMNT ARRAY DW -386, 97, 213, 21, 77, -91, 56, 7, 123, 65 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX MOV BX, 6*2 ;第六个元素在数组内的位移 MOV CX, 4 ;循环计数器置初值 AGAIN: MOV AX, ARRAY[BX] ;取出一个元素 MOV ARRAY[BX-2], AX;向前移动一个位置 ADD BX, 2 ;修改指针 LOOP AGAIN ;循环4次 MOV ARRAY[BX], 0;最后一个元素清零 MOV AX, 4C00H INT 21H CODE ENDS END START
START
(4)
CODE SEGMENT ASSUME START: XOR MOV MOV AGAIN: ADD AX, BX ADD LOOP MOV MOV INT CODE ENDS END
CS: CODE AX, AX CX, 34 BX, 1
BX, 3 AGAIN RESULT, AX AX, 4C00H 21H START
汇编语言程序设计
上次课后作业
4.6 假设数据项定义如下: DATA1 DB ‘HELLO!GOOD MORNING!’ DATA2 DB 20 DUP(?) 用串操作指令编写程序段,使其分别完成以下功能: (1)从左到右将DATA1中的字符串传送到DATA2 中。 (2)传送完后,比较DATA1和DATA2中的内容是 否相同。 (3)把DATA1中的第3和第4个字节装入AX。 (4)将AX的内容存入DATA2+5开始的字节单元中。
(3)
CODE SEGMENT ASSUME START: XOR MOV MOV AGAIN: ADD ADD LOOP MOV MOV INT CODE ENDS END
CS: CODE AX, AX CX, 50 BX, 2 AX, BX BX, 2 AGAIN RESULT, AX AX, 4C00H 21H