版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术(第二版) 清华大学出版社习题11. 什么是汇编语言,汇编程序,和机器语言?答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。2. 微型计算机系统有哪些特点?具有这些特点的根本原因是什么?答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、
2、重量轻、耗电省,维护方便。这些特点是由于微型计算机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。3. 微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。“存储程序控制”的概念可简要地概括为以下几点: 计算机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。 在计算机内部采用二进制来表示程序和数据。 将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。 五大部
3、件以运算器为中心进行组织。4. 请说明微型计算机系统的工作过程。答:微型计算机的基本工作过程是执行程序的过程,也就是cpu自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。5. 试说明微处理器字长的意义。答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、alu和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长
4、较短的微处理器运算速度快。6. 微机系统中采用的总线结构有几种类型?各有什么特点?答:微机主板常用总线有系统总线、i/o总线、isa总线、ipci总线、agp总线、ieee1394总线、usb总线等类型。 7. 将下列十进制数转换成二进制数、八进制数、十六进制数。 (4.75)10=(0100.11)2=(4.6)8=(4.c)16 (2.25)10=(10.01)2=(2.2)8=(2.8)16 (1.875)10=(1.111)2=(1.7)8=(1.e)168. 将下列二进制数转换成十进制数。 (1011.011)2=(11.6)10 (1101.01011)2=(13.58)10 (1
5、11.001)2=(7.2)109. 将下列十进制数转换成8421bcd码。 2006=(0010 0000 0000 0110)bcd 123.456=(0001 0010 0011.0100 0101 0110)bcd10. 求下列带符号十进制数的8位基2码补码。 +127补= 01111111 -1补= 11111111 -128补= 10000000 +1补= 0000000111. 求下列带符号十进制数的16位基2码补码。 +655补= 0000001010001111 -1补=1111111111111110 -3212补=1111011101011100 +100补=000000
6、000110010043习题 21. 8086 cpu在内部结构上由哪几部分组成?各部分的功能是什么?答:8086 cpu内部由两大独立功能部件构成,分别是执行部件和总线接口部件。执行部件负责进行所有指令的解释和执行,同时管理有关的寄存器。总线接口部件是cpu在存储器和i/o设备之间的接口部件,负责对全部引脚的操作。2. 简述8086 cpu的寄存器组织。答:8086 cpu内部共有14个16位寄存器,按用途可分为数据寄存器,段寄存器,地址指针与变址寄存器和控制寄存器。数据寄存器包括累加器,基址寄存器,计数器,和数据寄存器。段寄存器用来存放各分段的逻辑段基值,并指示当前正在使用的4个逻辑段。地
7、址指针与变址寄存器一般用来存放主存地址的段内偏移地址,用于参与地址运算。控制寄存器包括指令寄存器和标识寄存器。3. 试述8086 cpu标志寄存器各位的含义与作用。答:标志寄存器是16位的寄存器,但实际上8086只用到9位,其中的6位是状态标识位,3位是控制标识位。状态标志位分别是cf,pf,af,zf,sf,和of;控制标志位包括df,if,tf。cf:进位标志位。算数运算指令执行后,若运算结果的最高位产生进位或借位,则cf=1,否则cf=0。pf:奇偶标志位。反应计算结果中1的个数是偶数还是奇数。若运算结果的低8位中含有偶数个1,则pf=1;否则pf=0.af:辅助进位标志。算数运算指令执
8、行后,若运算结果的低4位向高4位产生进位或借位,则af=1;否则af=0.zf:零标志位。若指令运算结果为0,则zf=1;否则zf=0。sf:符号标志位。它与运算结果最高位相同。of:溢出标志位。当补码运算有溢出时,of=1;否则of=0。df:方向标志位。用于串操作指令,指令字符串处理时的方向。if:中断允许标志位。用来控制8086是否允许接收外部中断请求。tf:单步标志位。它是为调试程序而设定的陷阱控制位。4. 8086 cpu状态标志和控制标志有何不同?程序中是怎样利用这两类标识的?8086的状态标志和控制标识分别有哪些?答:状态标志位反应了当前运算和操作结果的状态条件,可作为程序控制转
9、移与否的依据。它们分别是cf,pf,af,zf,sf,和of。控制标志位用来控制cpu的操作,由指令进行置位和复位,控制标志位包括df,if,tf。5. 将1001 1100和1110 0101相加后,标识寄存器中cf, pf, af, zf, sf, of各为何值?答:cf=1,pf=1,af=1,zf=0,sf=1,of=06. 什么是存储器的物理地址和逻辑地址?在8086系统中,如何由逻辑地址计算物理地址?答:逻辑地址是思维性的表示,由段地址和偏移地址联合表示的地址类型叫逻辑地址。物理地址是真实存在的唯一地址,指的是存储器中各个单元的单元号。在8086系统中,物理地址=段地址10h偏移地
10、址7. 段寄存器cs=1200h,指令指针寄存器ip=4000h,此时,指令的物理地址为多少?指向这一地址的cs指和ip值是唯一的吗?答:此指令的物理地址=1200h10h4000h=16000h 并且指向这一物理地址的cs值和ip值并不是唯一的。8. 在8086系统中,逻辑地址ffff:0001,00a2:37f和b800:173f的物理地址分别是多少?答:逻辑地址ffff:000100a2:3tfb800:173f物理地址ffff1h00d9fhb973fh9. 在8086系统中,从物理地址388h开始顺序存放下列3个双字节的数据651ah,d761h和007bh,请问物理地址388h,3
11、89h,38ah,38bh,38ch和38dh 6个单元中分别是什么数据?答:(388h)=1ah,(389h)=65h,(38ah)=61h,(38bh)=dth,(38ch)=7bh,(38dh)=00h10. 8086微处理器有哪几种工作模式?各有什么特点?答:8086微处理器有最大和最小工作模式。在最小模式下:8086 cpu直接产生全部总线控制信号(dt/r,den,ale,m/io)和命令输出信号(rd,wr,inta)并提出请求访问总线的逻辑信号hold,hlda。在最大工作模式下,必须配置8288总线控制器,并且根据8086提供的状态信号s2,s1,s0,输出读写控制命令,可以
12、提供灵活多变的系统配置,以实现最佳的系统性能。11. 简述8086引脚信号中m/io,dt/r,rd,wr,ale,den和bhe的作用。答:m/io:输出信号,高电平时,表示cpu与存储器之间数据传输;低电平时,表示cpu与i/o设备之间数据传输。 dt/r:控制其数据传输方向的信号。dt/r=1时,进行数据发送;dt/r=0时,进行数据接收。rd:cpu的读信号,rd=0时,表示8086为存储口或i/o端口读操作。wr:cpu的写信号,wr =0时,表示8086为存储口或i/o端口写操作。ale:地址存锁信号,在t1能时刻有效。den:数据选通信号,当den有效时,表示允许传输。bhe:数
13、据总线允许信号,与a0组合使用,表示是否访问奇地址字节。12. 简述8086读总线周期和写总线周期和引脚上的信号动尖态变化过程。8086的读周期时序和写周期时序的区别有哪些?答:在8086读周期内,有关总线信号的变化如下:m/:在整个读周期保持有效,当进行存储器读操作时,m/为高电平;当进行i/o端口读操作时,m/为低电平。a19/s6a16/s3:在t1期间,输出cpu要读取的存储单元或i/o端口的地址高4位。t2t4期间输出状态信息s6-s3。/s7:在t1期间,输出bhe有效信号(为低电平),表示高8位数据总线上的信息可以使用,信号通常作为奇地址存储体的体选信号(偶地址存储体的体选信号是
14、最低地址位a0)。t2t4期间输出高电平。adl5ad0:在t1期间,输出cpu要读取的存储单元或i/o端口的地址a15a0。t2期间为高阻态,t3t4期间,存储单元或i/o端口将数据送上数据总线。cpu从adl5ad0上接收数据。ale:在t1期间地址锁存有效信号,为一正脉冲,系统中的地址锁存器正是利用该脉冲的下降沿来锁存a19/s6a16/s3,adl5ad0中的20位地址信息以及。:t2期间输出低电平送到被选中的存储器或i/o接口,注意,只有被地址信号选中的存储单元或i/o端口,才会被rd信号从中读出数据(数据送上数据总线adl5ad0)。dt/:在整个总线周期内保持低电平,表示本总线周
15、期为读周期,在接有数据总线收发器的系统中,用来控制数据传输方向。:在t2t3期间输出有效低电平,表示数据有效,在接有数据总线收发器的系统中,用来实现数据的选通。总线写操作的时序与读操作时序相似,其不同处在于:adl5ad0:在t2t4期间送上欲输出的的数据,而无高阻态。:从t2t4,引脚输出有效低电平,该信号送到所有的存储器和i/o接口。注意,只有被地址信号选中的存储单元或i/o端口才会被信号写入数据。dt/:在整个总线周期内保持高电平,表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输方向。习题3 1. 假定(ds)=2000h,(es)=2100h,(ss)=1500h
16、,(si)=00a0h,(bx)=0100h,(bp)=0010h,数据变量val的偏移地址为0050h,请指出下列指令原操作数是什么寻址方式,其物理地址是多少?(1) mov ax, 0abh (2) mov ax, 100h(3) mov ax, val (4) mov bx, si(5) mov al, valbx (6) mov cl, bxsi(7) mov valsi, bx (8) mov bpsi, 100答:(1) 立即数寻址,无物理地址 (2) 直接寻址,物理地址=2000h10h+100h=20100h(3) 直接寻址,物理地址=2000h10h+0050h=20050h
17、(4) 寄存器间接寻址,物理地址=2000h10h+00a0=200a0h(5) 相对寄存器寻址,物理地址=2000h10h+(0050+0100h)=20150h(6) 基址加变寻址,物理地址=2000h10h+(0100h+00a0h)=201a0h(7) 寄存器寻址,无物理地址(8) 立即数寻址,无物理地址2. 已知(ss)=0ffa0h,(sp)=00b0h,先执行两条把8057h和0f79h分别进栈的push指令,再执行一条pop指令,试画出堆栈区和sp内容变化的过程示意图。答:“8057h”进栈,则sp自动从00b0h指向00b2h,“0f79h”进栈,则sp自动从00b2h指向0
18、0b4h;执行一条pop指令,“0f79h”被弹出栈,sp从00b4h指向00b2h。图略。3. 设有关寄存器及存储单元的内容如下:(ds)=2000h, (bx)=0100h, (ax)=1200h, (si)=0002h, (20100h)=12h, (20101h)=34h, (20102h)=56h, (20103h)=78h, (21200h)=2ah, (21201h)=4ch, (21202h)=0b7h, (21203h)=65h.试说明下列各条指令单独执行后相关寄存器或存储单元的内容。(1) mov ax, 1800h (2) mov ax, bx(3) mov bx, 12
19、00h (4) mov dx, 1100bx(5) mov bxsi, al (6) mov ax, 1100bxsi答:(1) (ax)=1800h (2) (ax)=0100h (3) (bx)=4c2ah (4) (dx)=4c2ah (5) (20102h)=00h (6) (ax)=65b7h4. 写出实现下列计算的指令序列。(1) z=w+(x+z) (2) z=w-(x+6)-(r+9)答:(1) mov ax, z add ax, x add ax, w mov z, ax (2) mov ax, w add x, 6 sub ax, x add r, 9 sub ax, r
20、mov z, ax5. 若在数据段中从字节变量table相应的单元开始存放了015的平方值,试写出包含xlat指令的指令序列查找n(015)中的某个平方数。 答:lea bx, table mov al, cl xlat6. 写出实现下列计算的指令序列。(1) z=(w*x)/(r+6) (2) z=(w-x)/5*y)*2答:(1) mov ax, w imul x add r, 6 idiv r mov z, ax (2) mov ax, w sub ax, x mov bl, 5 idiv bl cbw imul y mov bx, 2 imul bx mov z, ax7. 假定(dx
21、)=1100100110111001b,cl=3,cf=1, 试确定下列各条指令单独执行后dx的值。(1) shr dx, 1 (2) shl dl, 1 (3) sal dh, 1 (4) sar dx, cl(5) ror dx, cl (6) rol dl, cl (7) rcr dl, 1 (8) rcl dx, cl答:(1) (dx)=0110 0100 1101 1100b (2) (dx)=1100 1001 0111 0010b(3) (dx)=1001 0010 1011 1001b (4) (dx)= 1111 1001 0011 0111b(5) (dx)= 0011
22、1001 0011 0111b (6)(dx)= 0100 1101 1100 1110b (7) (dx)= 1110 0100 1101 1100b (8) (dx)= 1001 0011 0111 0011b8. 已知程序段如下:mov ax, 1234hmov cl, 4rol ax, cldec axmov cx, 4mul cxint 20h试问:(1)每条指令执行后,ax寄存器的内容是什么?(2)每条指令执行后,cf,sf及zf的值分别是什么?(3)程序运行结束后,ax及dx寄存器的值为多少?答:mov ax, 1234h (ax)=1234h, cf=0,sf=0,zf=0 m
23、ov cl, 4 rol ax,cl (ax)=2341h,cf=1,sf=0,zf=0 dec ax (ax)=2340h,cf=1,sf=0,zf=0 mov cx,4 mull cx (ax)=8d00h, cf=0,sf=1,zf=0int 20h结束后,(dx)=0000h, (ax)=8000h9. 试分析下列程序段:add ax, bxjnc l2sub ax, bxjnc l3jmp shortl5如果ax,bx的内容给定如下:ax bx(1) 14c6h 80dch(2) b568h 54b7h问该程序在上述情况下执行后,程序转向何处。答:(1)转到l2处 (2)转到l3处习
24、题41下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。var1 db 10,2 var2 dw 5 dup(?),0 var3 db how are you?,3 dup(1,2) var4 dd -1,1,0 答:字节空间:var1:2;var2:12;var3:13;var4:8。存储空间的分配图: 2假定var1 和var2 为字变量,lab 为标号,试指出下列指令的错误之处。(1)add var1,var2 (2)sub al,var1 (3)jmp labcx (4)jnz var1 (5) mov 1000h,100 (6)shl al, 4 答:(1) 在算
25、术运算指令中,两个操作数不能同时为存储器寻址方式 (2) al 为字节,var1 为字变量,字长不相等; (3) 错误1:寄存器相对寻址方式,只能使用基址或变址寄存器,不能使用cx寄存器。错误2:汇编格式错误,无法判段是段内转移还是段间转移。 (4) 转向地址应为标号,不能是变量; (5) 目的操作数的类型不确定; (6) shl 指令中,当所移位数超过1 时,必须用cl取代所移位数。3对于下面的符号定义,指出下列指令的错误。a1 db ? a2 db 10 k1 equ 1024 (1) mov k1,ax (2)mov a1,ax (3)cmp a1,a2 (4)k1 equ 2048 答
26、:(1)k1 为常量,不能用mov 指令赋值; (2)a1 为字节,ax 为字变量,类型不一致; (3)a1 和a2同为存储器寻址方式,不符合语法规则; (4)k1 重新赋值前,必须用purge 释放。4数据定义语句如下所示: first db 90h,5fh,6eh,69h second db 5 dup(?) third db 5 dup(?) forth db 4 dup (?)自first 单元开始存放的是一个四字节的十六进制数(低位字节在前),要求: 编一段程序将这个数左移两位后存放到自second 开始的单元,右移两位后存放到自third 开始的单元,求补后放到forth开始的单元
27、。(注意保留移出部分) 答: data segment first db 90h,5fh,6eh,69h second db 5 dup(?) third db 5 dup(?) forth db 4 dup (?)data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax lea si,first lea di,second mov cx,2 clc;左移2 位mov ax,word ptr si ;ax=5f90h 为低十六位数据inc si inc si mov dx,word ptr si ;dx=
28、696eh 为高十六位数据push dx ;保存原有的高十六位数据push ax ;保存原有的低十六位数据rol dx,cl;将高位数据不带进位循环左移两位,即高2 位数据在dl 的低2 位and dl,03h ;让dl 中仅保存移出的高2 位数据mov di+4 ,dl;将移出的高2 位数据放入second 中的最高单元中rol ax,cl;将低位数据不带进位循环左移两位,即ax 的高2 位在al 的低2 位and al,03h;让al 中仅保存移出的ax 高2 位数据mov bl ,al;将al 中的数据放入bl 中保存pop ax;弹出原有的低十六位数据pop dx;弹出原有的高十六位数
29、据shl dx,cl;将高位数据算术逻辑左移2 位shl ax,cl;将低位数据算术逻辑左移2 位or dl,bl;将ax 中移出的高2 位数据放入dx 的低2 位mov word ptr di ,ax mov word ptr di+2 ,dx ;右移2 位lea si,first lea di,third mov cx,2 clc mov ax,word ptr si ;ax=5f90h 为低十六位数据inc si inc si mov dx,word ptr si ; dx=696eh 为高十六位数据push dx;保存原有的高十六位数据push ax;保存原有的低十六位数据ror ax
30、,cl;将低位数据不带进位循环右移两位,即低2 位数据在ah 的高2 位and ah,0c0h;让ah 中仅保存移出的低2 位数据push cx mov cx,6 shr ah,cl pop cx mov di ,ah ;将移出的低2 位数据放入third 中的最低单元中ror dx, cl;将低位数据不带进位循环左移两位,即ax 的高2 位在al 的低2 位and dh,0c0h ;让dh 中仅保存移出的dx 低2 位数据mov bl ,dh ;将dh 中的数据放入bl 中保存pop ax ;弹出原有的低十六位数据pop dx ;弹出原有的高十六位数据shr dx,cl ;将高位数据算术逻辑
31、左移2 位shr ax,cl ;将低位数据算术逻辑左移2 位or ah,bl ;将dx 中移出的低2 位数据放入ax 的高2 位mov word ptr di+1 , ax mov word ptr di+3 ,dx ;求补lea si,first lea di,forth mov ax,word ptr si ;ax=5f90h 为低十六位数据inc si inc si mov dx,word ptr si ; dx=696eh 为高十六位数据 xor ax, 0ffffh ;将低十六位取反 xor dx, offffh ;将高十六位按位取反 clc add ax,01h ;低位加1,即可为
32、原数的求补 adc dx,0 ;高位加低位加法时的进位mov word ptr di , ax mov word ptr di+2 ,dx mov ah,4ch int 21h code ends end start 5. 试编程序将内存从40000h到4bfffh的每个单元中均写入55h,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将al置7eh; 只要有错,则将al置81h。答:data segmentda1 db 55hcode segmentassume cs:code,ds:datastart: mov ax,4000h mov ds,ax mov cx,0c000h
33、mov bx,0000h mov ah,55h next1: mov byte ptrbx,ah inc bx loop next1 mov bx,0000h mov cx,0c000h mov al,81h next2: mov ah, bx cmp ah,55h jnz exit inc bx loop next2 mov al,7ehexit: mov ah,4ch int 21h code ends end start6. 在当前数据段4000h开始的128个单元中存放一组数据,试编程序将它们顺序搬移到a000h开始的顺序128个单元中,并将两个数据块逐个单元进行比较; 若有错将bl置
34、00h; 全对则将bl置ffh,试编程序。答:data segmentorg 400hda1 db 128 dup(?)org 0a00hda2 db 128 dup(?)data endscode segmentassume cs:code,ds:data,es:datastart: mov ax,data mov ds,ax lea si,da1 lea di,da2 mov cx,128again: mov al,si inc si inc di loop again lea si, da1 lea di, da2 mov cx,128next: mov al,si mov bl,di
35、cmp al,bl jnz error inc si inc di mov bl,0ffh loop next jmp exiterror: mov bl,00hexit: mov ah,4ch int 21h code ends end start7. 设变量单元a、b、c存放有3个数,若3个数都不为零,则求3个数的和,存放在d中; 若有一个为零,则将其余两个也清零,试编写程序。答:data segmenta db ?b db ?c db ?data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax cmp
36、a,00h jnz lp1 mov b,0 mov c,0 jmp lp4lp1: cmp b,00h jnz lp2 mov a,0 mov c,0 jmp lp4lp2: cmp c,00h jnz lp3 mov a,0 mov b,0 jmp lp4lp3: mov al,a add al,b add al,c mov ah,4chlp4: int 21h code ends end start8. 有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束; 否则,按顺序将此元素插入表中适当的位置,并修改表长。答:data
37、 segmentbuff db 100 dup(?)da1 db (?)length db 0data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov si,0 mov al,da1 mov cx,100find0: cmp buffsi,al jz exit inc si loop find0 mov di,99 mov si,0compare: cmp buffdi,al jg insert mov bl,buffdi mov buffdi+1,bl dec di cmp di,si jnl com
38、pare jmp exitinsert:mov buffdi+1,al mov length , 101exit:mov ah,4ch int 21hcode endsend start9. 内存中以first和second开始的单元中分别存放着两个16位组合的十进制(bcd码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以third开始的单元。答: data segmentfirst dd 34341212h second dd 78785656hthird db ?,?,?,?data endscode segmentassume cs:code,ds:datastart: mo
39、v ax,data mov ds,ax lea si,first lea di,second lea bx,third mov cx,4 clcagain:mov al,byte ptrsi mov dl,byte ptrdi adc al,dl daa mov byte ptrbx,al inc si inc di inc bx loop again jc aa mov byte ptrbx,0 jmp exitaa:mov byte ptrbx,1exit:mov ah,4ch int 21h code ends end start 10. 编写一段程序,接收从键盘输入的10个数,输入回车
40、符表示结束,然后将这些数加密后存于buff缓冲区中。加密表如下: 输入数字: 0,1,2,3,4,5,6,7,8,9; 密码数字: 7,5,9,1,3,6,8,0,2,4。答:data segment mitab db 7591368024 cont equ $-mitab buff db 10 dup (?),$ yuanwen db 10 dup (?),$ data endscode segment assumecscode,dsdata start: mov ax,data mov ds,ax mov si,0 mov cx,cont input: mov ah,1 int 21h c
41、mp al,13 jz exitand al,0fh mov yuanwensi ,al inc si loop inputexit : lea bx,mitab mov cx,si mov si,0jiami: mov al,yuanwensi xlat mitab mov buffsi,al inc si loop jiami mov ah, 4ch int 21hcode ends end start11.试编程序,统计由40000h开始的16k个单元中所存放的字符“a”的个数,并将结果存放在dx中。答:data segmentda1 db abuff db 4000h dup(?)da
42、ta endscode segmentassume cs:code,ds:datastart: mov ax,4000h mov ds,ax mov bx,0 mov cx,4000h find: mov al,bx mov bl,da1 cmp al,bl jnz next inc dxnext: inc si loop find mov ah,4ch int 21hcode endsend start12. 在当前数据段(ds),偏移地址为datab开始的顺序80个单元中,存放着某班80个同学某门考试成绩。按如下要求编写程序: (1) 编写程序统计90分; 80分89分; 70分79分;
43、60分69分,60分的人数各为多少,并将结果放在同一数据段、偏移地址为btrx开始的顺序单元中。(2) 试编程序,求该班这门课的平均成绩为多少,并放在该数据段的aver单元中。答:data segmentbuff dw 80 dup(?)da9 db 0da8 db 0 da7 db 0da6 db 0da5 db 0aver db 0data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov cx,80compare: mov bx,0 cmp buffbx,90 jb lp8 inc da9 jmp
44、next lp8: cmp buffbx,80 jb lp7 inc da8 jmp next lp7: cmp buffbx,70 jb lp6 inc da7 jmp next lp6: cmp buffbx,60 jb lp5 inc da6 jmp next lp5: inc da5 jmp next next: inc bx loop compare mov cx,80 xor ax,ax mov bx,00sum: add ax,buffbx inc bx loop lp1 mov cl,80 div cl mov aver , al mov ah,4ch int 21h code
45、 ends end start13. 编写一个子程序,对al中的数据进行偶校验,并将经过校验的结果放回al中。答:jiou procpush cxpush bxxor ah, ahpush axmov cl, 7loop1: sar al, 1adc ah, 0loop loop1mov al, ahxor ah, ah mov bl, 2div blmov bl, ahpop axror bl, 1or al, blpop bxpop cxretjiou endp14. 利用上题的子程序,对80000h开始的256个单元的数据加上偶校验,试编程序。code segmentassume cs: codestart : mov ax, 8000h mov ds, ax mov si, 0 mov cx, 256 lp: mov al, si call jiou mov si, al inc si loop lp mov ah, 4ch int 21h jiou procpush cxpush bxxor ah, ahpush axmov cl, 7loop1: sar al, 1adc ah, 0loop loop1mov al, ahxor ah, ah mov
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机械使用安全生产制度培训
- 氧气瓶与乙炔瓶使用安全技术规定培训
- 2025《答司马谏议书》新旧势力的较量课件
- 2026年高端厨电设备制造合同协议
- 2026执业兽医考试预防科目速记100条口诀
- 幼儿园炊事员工作制度与安全管理培训
- 2026年广东生态工程职业学院单招职业技能考试题库附参考答案详解(典型题)
- 焊工安全责任培训课件
- 2026年广东科贸职业学院单招职业技能测试题库附答案详解(a卷)
- 2026年平顶山工业职业技术学院单招职业倾向性考试题库及答案详解(真题汇编)
- YS/T 1018-2015铼粒
- GB/T 4450-1995船用盲板钢法兰
- GB/T 39489-2020全尾砂膏体充填技术规范
- GB/T 14598.301-2010微机型发电机变压器故障录波装置技术要求
- GB 30526-2019烧结墙体材料和泡沫玻璃单位产品能源消耗限额
- GA 139-2009灭火器箱
- 2023年江苏专转本计算机真题及答案
- 部编版小学道德与法治五年级下册第1课《读懂彼此的心》课件
- 2023年烟台蓝天投资开发集团有限公司招聘笔试题库及答案解析
- 医疗机构消防安全管理九项规定(2020版)-精品原创课件
- 工业厂房水电安装工程施工方案
评论
0/150
提交评论