汇编语言第三章答案

合集下载

第三章 习题和思考题参考答案(汇编语言)

第三章 习题和思考题参考答案(汇编语言)

第三章习题和思考题(汇编语言)一.填空题1.在汇编语言中标号的类型有NEAR 和FAR,变量的类型有BYTE、WORD、DWORD 、QWORD、TBYTE。

2.在汇编语言中,一个过程的属性为NEAR,表明主程序和子程序在同4一代码段中;若为FAR,则表明主程序和子程序不在同一代码段中。

3.下列程序运行后,X单元的内容为140。

.MODEL SMALL.DATAX DW 10Y DW 20Z DW 100,40,66,80.CODE.STARTUPMOV BX, OFFSET ZMOV AX, [BX]MOV Y, AXMOV AX, [BX+2]ADD AX, YMOV X, AX.EXITEND4.以下程序执行后,(AX)=5501H。

……A DW 124H,345H,128H,255H,512H,127H,678H,789HB DW 5……MOV BX, OFFSET AMOV SI, BMOV AX, [BX+SI]二.选择题1.完成41H送[2100H],42H送[2101H]的正确程序段是B 、C。

A. MOV AL, 41HB. MOV SI, 2100HMOV [2100H], AL MOV [SI], ‘A’INC 41H INC SIMOV [2100H], AL MOV [SI], ‘B’C. MOV AX, 4241HD. MOV AX, ‘AB’MOV [2100H], AX MOV [2100H], AX2. 在汇编过程中不产生指令码,只用来指示汇编程序的指令是 C 。

A. 汇编指令B. 机器指令C. 伪指令D. 宏指令三.问答题1.什么是指令语句?什么是伪指令语句?它们的主要区别是什么?答:指令语句经过汇编后要产生机器码,而伪指令语句不产生机器码;指令语句和机器的一种操作相对应,而伪指令语句和机器的一种伪操作(汇编过程)相对应。

2. 试计算下列伪指令中各变量所分配的字节数A1 DW 20A2 DW 8DUP(?),10,20A3 DD 10DUP(?)A4 DB 3DUP(?,4DUP(0))A5 DB ‘Happy New Year!!’答:变量A1、A2、A3、A4、A5分配的字节数分别为2 、20、40、15、16 四.阅读程序1.请把下列程序中所缺语句补充完整,并回答问题:TITLE EXAMPLE.ASMDATA SEGMENTA DW 0B DW 0C DW 230, 20, 54(1) DATA ENDSCODE SEGMENTASSUME (2) CS:CODE DS:DATAPROG PROC FARSTART:MOV AX,DATA(3) MOV DS, AXMOV BX,OFFSET CMOV AX,[BX]MOV B,AXMOV AX,2[BX]ADD AX,BMOV A,AXEXIT: MOV AH, 4CHINT 21HCODE ENDS_(4) END START问题: 1.程序执行完后,A单元的内容是多少? 2502.在以ES:SOC1为起始地址的表中存有字符串,它以NULL(00H)作为串结束符。

汇编语言沈美明答案汇编语言第3章答案沈美明

汇编语言沈美明答案汇编语言第3章答案沈美明

汇编语言沈美明答案汇编语言第3章答案沈美明第三章 80X86的指令系统和寻址方式 1、给定(BX )=637DH,(SI )=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么答案:(1)立即寻址没有(2)直接寻址 7237H(3)使用BX 的寄存器寻址没有(4)使用BX 的间接寻址 637DH(5)使用BX 的寄存器相对寻址 0D5F0H(6)基址变址寻址 8E18H(7)相对基址变址 004FH2、根据下列要求,写出相应的汇编指令(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。

(2)用寄存器BX 和SI 基地址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。

(3)用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX )相加,并把结果送回存储器中。

(4)用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回该存储单元中。

(5)把数0B5H 与(AL )相加,并把结果送回AL 中。

答案:(1)ADD DX,BX(2)ADD AL,[BX][SI](3)ADD [BX][0B2H], CX(4)MOV AX,2A59HADD [0524H] ,AX(5)ADD AL ,0B5H3、写出把首地址为BLOCK 的字数组的第6个字送回到DX 寄存器的指令。

要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答案:(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址 MOV SI,OAHMOV DX,[BLOCK][SI] (3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4、现有(DS )=2000H,(BX)=0100H,(SI)=0002H,(xx0)=12H,(xx1)=34H,(xx2)=56H, (xx3)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语言程序设计微机原理第2版课后答案

第三章8088汇编语⾔程序设计微机原理第2版课后答案第三章 8088汇编语⾔程序设计本章的主要内容是汇编语⾔语句⾏的构成,源程序的结构,汇编语⾔程序设计⽅法。

3.1 重点与难点本章的学习重点是结构化程序设计思想,顺序、分⽀、循环结构的程序设计,⼦程序结构的设计与调⽤,中断指令的应⽤。

另外,汇编语⾔伪指令的使⽤、源程序的结构等也是必须掌握的。

3.1.1 汇编语⾔语句⾏的构成1.标记(1)标识符:由数字、字母和下划线组成,且不能以数字开头,最⼤长度不超过31个字符。

(2)保留字:汇编语⾔中保留下来的具有特殊⽤途的字串,如指令、伪指令、寄存器名等都是保留字。

保留字不可⽤作标识符。

(3)界符:程序或指令中两个部分的分隔符号。

汇编语⾔源程序中可⽤的界符:′〈〉;,:? $ () + - = &[] * / ·(4)常量:数字常量,可以使⽤不同的进制D、B、H、Q;字符串常量,由引号引起来的字符串,相当给出字符所对应的ASCII码串。

2.符号及其属性(1)寄存器:8086/8088 CPU的寄存器可以作为指令的操作数。

(2)变量:即内存单元的符号地址。

变量不能与保留字、段名重名。

它有三个属性:段属性,指变量所在段的段地址;偏移量,指变量所在段的起始地址到变量地址之间的字节数,即偏移(有效、逻辑)地址。

类型,指指变量具有的字节数,包括BYTE、WORD、DWORD、QWORD和TBYTE等。

(3)标号:即代码段中某条指令的符号地址,由编程者根据需要确定的。

标号不能与保留字重名,可使⽤字母、数字及下划线,但不允许⽤数字开头,字符个数不超过31个。

标号作为符号地址也有三个属性:段、偏移量和类型(NEAR、FAR)。

3.表达式表达式是作为语句的⼀个操作数,在汇编时⼀个表达式得到⼀个值。

(1)操作数数据——常数、符号常量;存储单元地址——常⽤符号地址表⽰。

(2)运算符算术运算符:+、-、*、/、MOD。

对地址的运算仅有+(加)、-(减)运算符。

新版汇编语言程序设计1-5章【课后答案】

新版汇编语言程序设计1-5章【课后答案】

新版汇编语言程序设计【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。

〔解答〕CPU:包括运算器、控制器和寄存器组。

运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。

存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。

外部设备:实现人机交换和机间的通信。

〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU 可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。

辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。

RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。

存储器由大量存储单元组成。

为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。

KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。

〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。

〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

1632位微机原理与汇编语言课后第三章习题答案

1632位微机原理与汇编语言课后第三章习题答案

习题 3.9(1)mov al, 23h and 45h or 67h;al=67h(2)mov ax, 1234h/16 + 10h;ax=0133h(3)mov ax, 23h shl 4;ax=0230h(4)mov al, ‘a’ and (not (‘a’-’A’));al=41h(5)mov ax, (76543 lt 32768) xor 7654h;ax=7654h习题 3.10(1)41h 42h 43h 0ah 10h 45h 46h ffh - 04h 04h 04h ffh - 04h 04h04h ffh - 04h 04h 04h(2)10h 00h fbh ffh - - - - - -习题 3.11(1)my1b db 'Personal Computer'(2)my2b db 20(3)my3b db 14h(4)my4b db 00010100b(5)my5w dw 20 dup(?)(6)my6c equ 100(7)my7c equ < Personal Computer >习题 3.14(1)offset varb = 0104h;offset mess = 0114h(2)type buff = 1;type mess = 1;type vard = 4(3)sizeof varw = 4;sizeof buff = 10;sizeof mess = 5(4)lengthof varw =2;lengthof vard = 1习题 3.15(1)mov byte ptr [bx],1000 ;1000超出了一个字节范围(2)mov bx,offset myword[si];OFFSET只能用于简单变量.寄存器的值只有程序执行时才能确定,而offset是汇编过程计算偏移地址,故无法确定,可以改为lea bx,myword[si](3)cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许(4)mov mybyte1,al+1 ;数值表达式应为运算符加常量,寄存器值只有执行时才能确定,汇编时无法计算(5)sub al,myword ;字节量AL与字量myword,类型不匹配(6)jnz myword ;Jcc指令只有相对短转移寻址方式,不支持间接寻址方式,间接寻址指指令代码中指示寄存器或存储单元,目的地址从寄存器或存储单元中取得习题 3.16.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示mov ax,4c00hint 21hend start习题 3.17ASCTOH macrolocal asctoh1,asctoh2cmp al,'9'jbe asctoh1 ;;小于等于‘9’,说明是0~9,只需要减去30hcmp al,'a'jb asctoh2 ;;大于‘9’,小于‘a’,说明是A~F,还要减7sub al,20h ;;大于等于‘a’,说明是a~f,还要减20h asctoh2: sub al,7asctoh1: sub al,30hendm.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段LEDtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb 80h,90h,88h,83h,0c6h,0c1h,86h,8ehdispmsg db 'input a number:$'crlf db 0dh,0ah,'$'lednum db ?.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dx,offset dispmsgmov ah,09hint 21hmov ah,1int 21hasctohmov lednum,almov dx,offset crlfmov ah,09hint 21hmov bx,offset LEDtablemov al,lednumxlatmov bl,almov cl,4rol al,clcall htoascmov al,blcall htoascmov ax,4c00hint 21hHTOASC proc;子程序HTOASC:将al低4位表达的十六进制数转换为ASCII码push bxmov bx,offset ASCII ;bx指向ascii码表and al,0fh ;取得一位16进制数xlat CS:ASCII ;换码:AL←CS:[BX+AL]mov dl,almov ah,2int 21hpop bxret;数据区ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39hdb 41h,42h,43h,44h,45h,46hHTOASC endpend start习题3.18mov al, bufXcmp al, bufYjae donemov al, bufYdone: mov bufZ, al习题3.19.;习题3.19.model small.stack.databufX dw -7signX db ?.codestart: mov ax,@datamov ds,axcmp bufX,0 ;test bufX,80hjl next ;jnz nextmov signX,0jmp donenext: mov signX,-1done: mov ax,4c00hint 21hend start习题3.20.;习题3.20.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段bufx dw -1bufy dw -1bufz dw -1.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov dl,'2'mov ax,bufxcmp ax,bufyje next1dec dlnext1: cmp ax,bufzje next2mov bx,bufycmp bx,bufzje next2dec dlnext2: mov ah,2int 21hmov ax,4c00hint 21hend start习题3.21.;数据段number db 78h ;实现假设的一个数值0111 1000B,D3为1addrs dw offset fun0,offset fun1,offset fun2,offset fun3dw offset fun4,offset fun5,offset fun6,offset fun7;取得各个处理程序开始的偏移地址.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSmov al,numbermov bx,0 ;BX←记录为1的位数mov dl,'?' ;处理数据为零的情况,显示?cmp number,0jnz restartmov ah,2int 21hjmp doneRestart: cmp al,0 ;AL=0结束jz doneagain: shr al,1 ;最低位右移进入CFjc next ;为1,转移inc bx ;不为1,继续,只在不为1的时候增加bx,所以后文补充jmp againnext: push axpush bxshl bx,1 ;位数乘以2(偏移地址要用2个字节单元)jmp addrs[bx] ;间接转移:IP←[table+BX];以下是各个处理程序段fun0: mov dl,'0'jmp dispfun1: mov dl,'1'jmp dispfun2: mov dl,'2'jmp dispfun3: mov dl,'3'jmp dispfun4: mov dl,'4'jmp dispfun5: mov dl,'5'jmp dispfun6: mov dl,'6'jmp dispfun7: mov dl,'7'jmp dispdisp: mov ah,2 ;显示一个字符int 21hpop bxpop axinc bx ;注意,即使Di位不为1,为记录确切的分支入口,仍然需要增加bxjmp restartdone: mov ax,4c00hint 21hend start习题3.22.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ? ;预留结果单元.codestart: mov ax,@data;程序段起点mov ds,ax ;设置DSxor si, si ;位移量清零xor al, al ;取第一个数mov cx, num ;累加次数again: add al, b_data[si] ;累加inc si ;指向下一个数loop again ;如未完,继续累加mov sum, al ;完了,存结果mov ax,4c00hint 21hend start习题3.23;xiti323,空格数目放在total中.model small ;定义程序的存储模式.stack ;定义堆栈段.data ;定义数据段total dw ?wtemp dw ? ;是writ子程序的入口参数.codestart: mov ax,0040h ;送段地址mov ds, axmov si, 0 ;偏移地址mov cx, si ;计数(循环次数)xor ax, ax;空格计数器清零again: cmp byte ptr [si], 20h ;与空格的ASCII码比较jne next ;不是空格,转inc ax ;是空格,空格数加1next: inc si ;修改地址指针loop again ;cx=cx-1,如cx=0 退出循环mov total,ax ;total中放空格数mov ax,totalmov wtemp,axcall writemov ax,4c00hint 21hwrite proc ;显示有符号10进制数的通用子程序write push ax ;入口参数:共享变量wtemppush bxpush dxmov ax,wtemp ;取出显示数据test ax,ax ;判断数据是0,正数还是负数jnz write1mov dl,'0' ;是0,显示“0”后退出mov ah,2int 21hjmp write5write1: jns write2 ;是负数,显示“-“mov bx,ax ;ax中数据暂存于bx,因为要用dos调用mov dl,'-'mov ah,2int 21hmov ax,bxneg ax ;数据求补(绝对值)write2: mov bx,10push bx ;10压入堆栈,作为推出标志write3: cmp ax,0 ;数据(商)为0,转向显示jz write4sub dx,dx ;扩展被除数dx.axdiv bx ;数据除以10,dx.ax/10,商送ax,余数送dxadd dl,30h ;余数(0~9)转换为ascii码push dx ;数据各位按照先低位后高位依次压入堆栈jmp write3write4: pop dx ;数据各位按照先高位后低位依次弹出堆栈cmp dl,10 ;判断是否结束,标志为10je write5mov ah,2 ;显示int 21hjmp write4write5: pop dxpop bxpop axretwrite endpdpcrlf proc ;使光标回车换行的子程序push axpush dxmov ah,2mov dl,0dhint 21hmov ah,2mov dl,0ahint 21hpop dxpop axretdpcrlf endpend start习题3.24;数据段count equ 100parray dw count dup(?) ;假设有100个数据wordsum dw 0msg db ‘overflow’,’$’;代码段mov cx,countmov ax,0mov bx,offset parrayagain: add ax,[bx]jnc nextmov dx,offset msgmov ah,9int 21h ;显示溢出信息jmp done ;然后,跳出循环体next: add bx,2loop againmov wordsum,axdone: mov ax,4c00hint 21h习题3.25;xiti325.asm;编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。

汇编语言1-3章答案

汇编语言1-3章答案

///第一章. 习题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001b=171h(2) 10000=10 0111 0001 0000b=2710h(3) 4095=1111 1111 1111b=fffh(4) 32767=111 1111 1111 1111b=7fffh1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101b=2dh=45(2) 1000 0000b=80h=128(3) 1111 1111 1111 1111b=ffffh=65535(4) 1111 1111b=ffh=2551.3 将下列十六进制数转换为二进制数和十进制数:(1) fa (2) 5b (3) fffe (4) 1234答:(1) fah=1111 1010b=250(2) 5bh=101 1011b=91(3) fffeh=1111 1111 1111 1110b=65534(4) 1234h=1 0010 0011 0100b=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3a+b7 (2) 1234+af (3) abcd-fe (4) 7ab×6f答:(1) 3a+b7h=f1h=241(2) 1234+afh=12e3h=4835(3) abcd-feh=aacfh=43727(4) 7ab×6fh=35325h=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011b+0100 1100b=1111 0111b=0f7h;cf=0;of=0(2) 85+(-76)=0101 0101b+1011 0100b=0000 1001b=09h;cf=1;of=0(3) 85-76=0101 0101b-0100 1100b=0101 0101b+1011 0100b=0000 1001b=09h;cf=0;of=0(4) 85-(-76)=0101 0101b-1011 0100b=0101 0101b+0100 1100b=10100001b=0a1h;cf=0;of=1(5) (-85)-76=1010 1011b-0100 1100b=1010 1011b+1011 0100b=0101 1111b=5fh;cf=0;of=1(6) -85-(-76)=1010 1011b-1011 0100b=1010 1011b+0100 1100b=11110111b=0f7h;cf=0;of=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) d8 (2) ff答:(1) d8h表示的带符号数为-40,d8h表示的无符号数为216;(2) ffh表示的带符号数为-1,ffh表示的无符号数为255。

微机原理与汇编语言第三章习题解答

微机原理与汇编语言第三章习题解答

3.1 8086/8088 CPU的地址总线有多少位?其寻址范围是多少?答:20条,寻址范围:0~220-1 (1MB)3.2 8086/8088 CPU分为哪两个部分?各部分主要由什么组成?答: BIU(Bus Interface Unit总线接口单元)、EU(Execution Unit执行单元)3.4 8086/8088 CPU中有几个通用寄存器?有几个变址寄存器?有几个指针寄存器?通常哪几个寄存器也可作为地址寄存器使用?答:八个通用寄存器:AX、BX、CX、DX、SP、BP、SI、DI;三个指针寄存器:IP、SP、BP。

指令指针IP总是指向下一条将要执行的指令在代码段中的偏移地址。

当堆栈中有压入的数据时,堆栈指针SP总是指向栈顶;两个间址指针寄存器:源变址SI和目的变址寄存器DI;在寄存器间接寻址方式中,只有BX、BP、SI、DI能充当地址寄存器。

3.8 在8086/8088 CPU工作在最小模式时,(1)当CPU访问存储器时,要利用哪些信号?(2)当CPU访问外设接口时,要利用哪些信号?(3)当HOLD有效并得到响应时,CPU的哪些信号置高阻?答:当MN/MX为高电平时工作于最小模式、否则为最大模式。

(1)地址线信号、数据线信号、RD、WR、M/IO、DEN、ALE、BHE、DT/R。

(2)地址线信号、数据线信号、RD、WR、M/IO、READY、DEN、ALE、DEN。

(3)DEN、DT/R3.9 当在8086/8088 CPU工作在最大模式时,(1)S—2、S—1、S—0可以表示CPU的哪些状态?(2)CPU的RQ——/GT——信号的作用?答:(1)(2)多处理器的总线控制信号。

共享总线的其他主控者通过该信号申请总线控制权和获得总线授予权。

3.10 试求出下面运算后各个标志位的值,并说明进位标志和溢出标志的区别? 1278H+3469H答:0 0 0 1 0 0 1 0 0 1 1 1 1 0 0 0+ 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1= 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1SF=0、CF=0、ZF=0、PF=1、AF=1、OF=03.12什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。

第三章习题参考答案

第三章习题参考答案

第三章习题参考答案一、填空题1、指令格式是由操作码和操作数所组成,也可能仅由操作码组成。

2、若用传送指令访问MCS-51的程序存储器,它的操作码助记符应为MOVC 。

3、若用传送指令访问MCS-51的片内数据存储器,它的操作码助记符应为MOV 。

4、若访问MCS-51的片外数据存储器,它的操作码助记符应为MOVX 。

5、累加器(A)=80H,执行完指令ADD A,#83H后,进位位C= 1 。

6、执行ANL A,#0FH指令后,累加器A的高4位= 0000 。

7、JZ rel的操作码地址为1000H,rel=20H,它的转移目的地址为1022H 。

8、JBC 00H,rel 操作码的地址为2000H,rel=70H,它的转移目的地址为2073H 。

9、累加器(A)=7EH,(20H)= #04H,MCS-51执行完ADD A,20H指令后PSW.0= 0 。

10、MOV PSW,#10H是将MCS-51的工作寄存器置为第 2 组。

11、指令LCALL 37B0H,首地址在2000H,所完成的操作是2003H 入栈,37B0H →PC。

12、MOVX A,@DPTR源操作数寻址方式为寄存器间接寻址。

13、ORL A,#0F0H是将A的高4位置1,而低4位保持不变。

14、SJMP rel的指令操作码地址为0050H,rel=65H,那么它的转移目标地址为 00B7H 。

15、设DPTR=2000H,(A)=80H,则MOVC A,@A+DPTR的操作数的实际地址为2080H 。

16、MOV C,20H源寻址方式为位寻址。

17、在直接寻址方式中,只能使用8 位二进制数作为直接地址,因此其寻址对象只限于片内RAM 。

18、在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。

19、在变址寻址方式中,以 A 作变址寄存器,以PC 或DPTR 作基址寄存器。

20、假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC后,把程序存储器1031H 单元的内容送入累加器A中。

完整word版汇编第三章习题答案

完整word版汇编第三章习题答案

第三章习题答案3.1寻址方式有效地址(EA)(1) 立即寻址无(2) 直接寻址7237H(3) BX寄存器寻址无(4) BX寄存器间接寻址637DH(5) BX寄存器相对寻址0D5B4H(6) 基址变址寻址8E18H(7) 相对基址变址寻址004FH32⑴ADD DX, BX⑵ADD AL, [BX][SI]⑶ADD [BX+OB2H], CX⑷ADD WORD P TR[0524H], 2A59H⑸ADD AL,0B5H⑴LEA BX, BLOCK +(6-1)*2MOV DX, [BX]⑵LEA BX, BLOCKMOV DX, [BX+10]⑶MOV SI, 10LEA BX, BLOCK MOV DX, [BX][SI]34⑴1200H⑵0100H⑶4C2AH⑷3412H4C2AH⑹7856H⑺65B7H35⑴EA=(I P)+D=7CD9H⑵物理地址=16 X DS+(BX)=224A0H IP=0600H⑶物理地址=16 X DS+(BX)+D=275B9H IP=098AHMOV BX, 2000HLDS SI, [BX]MOV AX, [SI]AX3.7(1)⑵⑶0626H+27H=064DH0626H+6BH=0691H0626H+0FFC6H=05ECH3.8⑴⑵(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)寻址方式立即数寻址寄存器寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器相对寻址寄存器相对寻址基址变址寻址相对基址变址寻址39⑴310⑴⑵(注意符号扩展)MOV AX, [BX+12]MOV ZERO, AXMOV AX, ARRAY[BX]MOV ZERO, AX1234H0032H8FF10H8FF11H8FF12H8FF13H物理地址无无20100H20050H20100H21100H15010H200A0H20000H + 0100H+0AH = 2010AH20150H201A0H201F0H1E00H3.130FFAAEH0FFAAFH(1)初始(2) 8057H 入栈(3) 0F79H 入栈(4) 0F79H 出栈3.1562A0H 62A0H 62A0H 62A0HSFZFCFOF317(1)+1234H +4321H +CFA0H +9D60H74D4H A5C1H 3240HMOV AX, ZSUB AX, XADD AX, WMOV Z, AXADD X, 6ADD R,9MOV AX, WSUB AX, XSUB AX, RMOV Z, AXMOV AX, WIMUL X(1)0000H4NOT AX NOT DX ADDAX, 1 ADCDX, 03.23(1) BX=009AH ⑵ BX=0061H ⑶ BX=00FBH (4) BX=001CH ⑸ BX=0000H (6) BX=0001H3.25(1) +53 X 2 MOV AL, 35HADDY, 6MOV BX, YIDIV BXMOV Z, AX MOV R, DX (4) MOV BX, W SUB BX MOV AX, Y MOV CX, 5 IMUL CX MOV CX AX MOV AX, BXCWD IDIV CX SAL AX,1 MOV 乙AX,X ;(BX)=W-X ;(DX,AX)=Y X 5 ;BX 扩展到EAX (32位) ;被除数扩展到64位 滁数丫限制为字(16位) ;可以认为AX 能存储下结果(2) -49 X 2 MOVAL, CFH53.29(1) LEA SI, CONAMELEA DI, P RLINE MOV CX, 20 (2) LEA SI, CONAME ADD SI, 19 LEA DI, P RLINE (3) LEA SI, CONAME ADD SI, 2 LODSWCLD REP MOVSB ADD DI, 19 STDREP MOVSB(4) LEA DI, P RLINEADD DI, 5 ⑸ LEA DI, CONAME MOV AL, 20HMOV CX, 20 CLD REPNE SCASB JNZ NO-FOUND MOV BH, ALNO-FOUND:3.31(1) CLDMOV CX, 132 MOV AL, 20HLEA DI, P RINT_LINE REP STOSB REPNE SCASB第一个‘一’在 DI-1中⑶ LEA DI, STUDENT_ADDR+8MOV AL, 一' 最后一个‘一‘在 DI-1中结果为 SAL AL, 16AH =106DSAL结果为9EH = -98DAL, 1结果为 MOV AL, 35H SAR AL, 1 1AH=26D (4) -49 - 2 MOV SAR 结果为E7H=-24DAL, CFHAL, 13.27 DX=0000 0000 0101 1100B (1) ⑵ ⑶ ⑷ ⑹ ⑺ (8)(9)DX=OOOO 0000 0001 0111B DX=0000 0101 1100 1000B DX=0000 0000 0111 0010B DX=0001 0000 0001 0111B DX=0000 0000 1100 1101B DX=0000 0000 1011 1001B DX=0000 0101 1100 1100BDX=0000 0000 1101 1100B (4) LEA DI, STUDENT_NAME⑸ CLDSTOSW(2) LEA DI, STUDENT_ADDRMOV AL, 一' MOV CX, 9CLDf STDREPNE SCASBMOV CX,9MOV CX, 30LEA SI, STUDENT_NAME LEADI, P RINT_LINE REPMOVSBJNE NO-MATCHMOV CX, 30LEA DI, STUDENT_NAME MOV AL,环'REP STOSB LEA SI, STUDENT_ADDR+8 LEA DI, P RINT_LINE+131 REP MOVSBNO-MATCH:HLTAX BX JB JNB JBE JNBE JL JNL JLE JNLE 1F52H 1F52H X V V X X V V X88C9H 88C9H X V V X X V V X FF82H 007EH X V X V V X V X58BAH 020EH X V X V X V X V FFC5H FF8BH X V X V X V X V 09A0H 1E97H V X V X V X V X 8AEAH FC29H V X V X V X V X D367H 32A6H X V X V V X V XMOV AL, STA TUS;当全为0时;偶转移,当有2个1时(0的情况前一条已经跳转)CMP AL, 00101010B3.39(1 ) JZ ROUTINE-1JMP ROUTINE-3;当为3个1时;剩余情况,1个1时。

汇编第三章习题答案

汇编第三章习题答案

第三章习题答案3.1寻址方式有效地址(EA)(1) 立即寻址无(2) 直接寻址7237H(3) BX寄存器寻址无(4) BX奇存器间接寻址637DH(5) BX寄存器相对寻址0D5B4H(6) 基址变址寻址8E18H(7) 相对基址变址寻址004FH32⑴ADD DX, BX⑵ADD AL, [BX][SI]⑶ADD [BX+0B2H], CX⑷ADD WORD PTR[0524H], 2A59H⑸ADD AL,0B5H⑴LEA BX, BLOCK +(6-1)*2MOV DX, [BX]⑵LEA BX, BLOCKMOV DX, [BX+10]⑶MOV SI, 10LEA BX, BLOCK MOV DX, [BX][SI]34⑴1200H⑵0100H⑶4C2AH⑷3412H4C2AH⑹7856H⑺65B7H3.5⑴EA=(IP)+D=7CD9H⑵物理地址=16 X DS+(BX)=224A0H IP=0600H⑶物理地址=16 X DS+(BX)+D=275B9H IP=098AH8FF10H 8FF11H 8FF12H8FF13HMOV BX, 2000H LDS SI, [BX] MOV AX, [SI]AXL38寻址方式物理地址(1) 立即数寻址 无 (2) 寄存器寻址 无 (3) 直接寻址 20100H (4) 直接寻址 20050H (5) 寄存器间接寻址 20100H (6) 寄存器间接寻址 21100H (7) 寄存器间接寻址 15010H(8) 寄存器间接寻址 200A0H(9) 寄存器相对寻址 20000H + 0100H+0AH = 2010AH(10) 寄存器相对寻址 20150H (11) 基址变址寻址 201A0H (12)相对基址变址寻址201F0H19(1)MOV AX, [BX+12]MOV ZERO, AX⑵MOV AX, ARRAY[BX]MOV ZERO, AX3.10(1) 1234H ⑵0032H(注意符号扩展)37 ⑴ 0626H+27H=064DH ⑵ 0626H+6BH=0691H (3)0626H+0FFC6H=05ECH62A0H +CFAOH 3240H 0 0 1 062A0H+9D60H (1)0000H 0 1 13.17(1) MOV AX, ZSUB AX, X ADD AX, WMOV Z, AX ⑵ ADD X, 6 ADD R,9 MOV AX, W SUB AX, X SUB AX, R MOV Z, AX(3) MOV AX, WIMUL X1E00H3.13 (3) 0F79H 入栈(4) 0F79H 出栈62A0H 62A0H +1234H +4321H74D4HA5C1H SF 0 1 ZF0 0 CF 0 0OF 013.15ADD Y, 6MOV BX, YIDIV BXMOV Z, AXMOV R, DX(4) MOV BX, WSUB BX, X ;(BX)=W-XMOV AX, YMOV CX, 5IMUL CX ;(DX,AX)=Y X 5MOV CX AXMOV AX, BX ;BX扩展到EAX(32位)CWD ;被除数扩展到64位IDIV CX 滁数Y限制为字(16位)SAL AX,1MOV 乙AX ;可以认为AX能存储下结果3.21NOT AXNOT DXADD AX, 1ADC DX, 03.23⑴ BX=009AH ⑵ BX=0061H ⑶ BX=OOFBH (4) BX=001CH ⑸ BX=OOOOH (6) BX=0001H3.25(1) +53 X 2 MOV AL, 35H (2) -49 X 2 MOV AL, CFHSAL AL, 1 结果为6AH =106D⑶ +53 - 2 MOV AL, 35HSAR AL, 1结果为 1AH=26DSALAL,1结果为9EH = -98D (4) -49 - 2 MOV AL, CFHSAR AL, 1结果为E7H=-24D3.27(1) DX=0000 0000 0101 1100B ⑵ DX=0000 0000 0001 0111B (3) DX=0000 0101 1100 1000B (4) DX=0000 0000 0111 0010B ⑸ DX=0001 0000 0001 0111B (6) DX=0000 0000 1100 1101B ⑺ DX=0000 0000 1011 1001B (8) DX=0000 0101 1100 1100B (9) DX=0000 0000 1101 1100B3.29(1) LEA SI, CONAMELEA DI, PRLINE MOV CX, 20 CLD REP MOVSB (4) LEA DI, PRLINEADD DI, 5 STOSW(2) LEA SI, CONAME ADD SI, 19 LEA DI, PRLINE ADD DI, 19 STD REP MOVSB⑸ LEA DI, CONAME MOV AL, 20H MOV CX, 20 CLDREPNE SCASB (3) LEA SI, CONAMEADD SI, 2 LODSWJNZ NO-FOUND MOV BH, AL NO-FOUND:(2) LEA DI, STUDENT_ADDR MOV AL,-'MOV CX, 9CLD REPNE SCASB第一个’一’在 DI-1中⑶ LEA DI, STUDENT_ADDR+8MOV AL,-'MOV CX,9 ----------------------------—► STDREPNE SCASB最后一个’一’在 DI-1中(4) LEA DI, STUDENT_NAME ⑸ CLD3.31 (1) CLDMOV CX, 132 MOV AL, 20H LEA DI, PRINTLINEREP STOSBMOV AL, 20HMOV CX, 30CLDREPE SCASBJNE NO-MATCHMOV CX, 30LEA DI, STUDENT_NAMEMOV AL,环'REP STOSBNO-MATCH:MOV CX, 30LEA SI, STUDENT_NAMELEA DI, PRINTLINEREP MOVSBSTDMOV CX, 9LEA SI, STUDENT_ADDR+8LEA DI, PRINT_LINE+131REP MOVSBHLTAX BX JB JNB JBE JNBE JL JNL JLE JNLE 1F52H 1F52H X V V X X V V X 88C9H 88C9H X V V X X V V X FF82H 007EH X V X V V X V X 58BAH 020EH X V X V X V X V FFC5H FF8BH X V X V X V X V 09A0H 1E97H V X V X V X V X 8AEAH FC29H V X V X V X V X D367H 32A6H X V X V V X V X MOV AL, STA TUS;当全为0时;偶转移,当有2个1时(0的情况前一条已经跳转);当为3个1时;剩余情况,1个1时。

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。

汇编语言对大小写不敏感。

如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。

汇编语言课后答案第3章

汇编语言课后答案第3章

汇编语言课后答案第3章第3章习题3.1 填空题(1)汇编语言指令由两部分组成:___操作码__________表示指令的操作内容,_____操作数________表示指令在执行过程中所用到的数据信息。

(2)在16位CPU的寄存器间接寻址方式中,若用__SI_____、__DI______、__BX______作为间接寻址的寄存器,则操作数在____DS___段中;若用___BP____作为间接寻址的寄存器,则操作数在___SS_____段中。

(3)在16位CPU的基址变址寻址方式中,基址寄存器可以为__BX_____或__BP______,变址寄存器可以为___SI____或___DI_____,若用__BX_____作为基址寄存器,则操作数在____数据段___段中;若用___BP____作为基址寄存器,则操作数在__堆栈______段中。

(4)设AX=2000H,BX=2300H,则在执行了指令CMP AX,BX后,标志CF=__1_______、ZF=____0____。

(5)当执行指令DIV BL后,被除数在_AX_______中,所得商在_______AL__中,余数在_____AH___中。

3.2 选择题1.若栈顶的物理地址为12000H,当执行完指令PUSH BX后,栈顶的物理地址为(D)A. 12001HB. 12002HC. 11FFFHD. 11FFEH2.在程序运行过程中,确定下一条指令的物理地址的计算表达式是(B)A. DS×16+SIB. CS×16+IPC. SS×16+SPD. ES×16+DI3.下面指令执行后,将改变寄存器AX内容的指令是(B)A. OR AX,AXB. AND AX,BXC. TEST AX,01HD.CMP AX,14.设AH=79H,当执行指令ADD AH,98H后,标志位CF和0F 的值分别为(D )A. 0,0B. 0,1C. 1,0D. 1,15.设AL=0A0H,要使结果AL=50H,应执行的指令是( D)A. AND AL,0F0HB. NOT ALC. OR AL,0F0HD. XOR AL,0F0H6.设AH=68H,当执行指令SUB AH,72H后,标志位CF和SF 的值分别为(D )A. 0,0B. 0,1C. 1,0D. 1,17.要使寄存器AL的最低位置1,应使用下面的指令( C )A. AND AL,01HB. XOR AL,01HC. OR AL,01HD. NOT AL8.要使BL寄存器的最高位清0,应使用下面的指令(D)A. AND BL,80HB. OR AL,7FHC. OR BL,80HD. AND BL,7FH9. 将寄存器AX的内容乘以2的正确指令序列是( A )A. SHL AX,1B. SHR AX,1C. ROL AX,1D. RCR AX,110.下列指令执行后,寄存器AL中的内容为(C)MOV AL,90HADD AL,ALADC AL,ALA. 20HB. 240HC. 41HD. 241H3.3 说明下列指令中源操作数的寻址方式。

16/32位微机原理、汇编语言及接口技术第2版-第三章-习题答案

16/32位微机原理、汇编语言及接口技术第2版-第三章-习题答案

16/32位微机原理、汇编语⾔及接⼝技术第2版-第三章-习题答案第3章汇编语⾔程序设计(习题3)3.16 解:mov ah,1 ;只允许输⼊⼩写字母int 21hsub al,20h ;转换为⼤写字母mov dl,almov ah,2int 21h ;显⽰3.17 解:mov bx,offset LEDtablemov al,lednumxlat3.18 解:mov ax, bufXcmp ax, bufYjae donemov ax, bufYdone: mov bufZ, ax3.19 解:.model small.stack.databufX dw -7signX db ?.code.startupcmp bufX,0 ;test bufX,80hjl next ;jnz nextmov signX,0jmp donenext: mov signX,-1end3.20 解:mov dl,’2’mov ax,bufXcmp ax,bufYje next1dec dlnext1: cmp ax,bufZje next2dec dlnext2: mov ah,2int 21h3.21 解:;代码段mov al,numbermov bx,0 ;BX←记录为1的位数restart: cmp al,0 ;AL=0结束jz doneagain: shr al,1 ;最低位右移进⼊CFjc next ;为1,转移inc bx ;不为1,继续jmp againnext: push axpush bxshl bx,1 ;位数乘以2(偏移地址要⽤2个字节单元)jmp addrs[bx] ;间接转移:IP←[table+BX];以下是各个处理程序段fun0: mov dl,'0'jmp dispfun1: mov dl,'1'jmp dispfun2: mov dl,'2'jmp dispfun3: mov dl,'3'fun4: mov dl,'4'jmp dispfun5: mov dl,'5'jmp dispfun6: mov dl,'6'jmp dispfun7: mov dl,'7'jmp disp;disp: mov ah,2 ;显⽰⼀个字符int 21hpop bxpop axjmp restartdone: …3.22 编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存⼊字节变量SUM中(不考虑溢出和进位)。

汇编语言程序设计第三章习题答案

汇编语言程序设计第三章习题答案

第三章答案:3.1(1)立即数寻址代码段(2)寄存器寻址数据段(3)寄存器间址数据段(4)寄存器间址数据段(5)直接寻址数据段(6)直接寻址数据段(7)基址寻址堆栈段(8)直接寻址代码段(9)寄存器寻址数据段(10)变址寻址数据段(11)基址变址寻址数据段(12)基址变址寻址堆栈段(13)基址变址寻址堆栈段(14)基址变址寻址堆栈段3.2(1)直接寻址30000H+0ABCH=30ABCH(2)寄存器寻址(3)直接寻址30000H+2000H=32000H(4)基址寻址30000H+0100H+2000H=32100H(5)寄存器间址30000H+0100H=30100H(6)寄存器间址30000H+00A0H=300A0H(7)寄存器间址20000+0010H=20010H(8)基址变址寻址20000H+0010H+2000H+00A0H=220B0H (9)基址寻址30000H+0100H-40H=300C0H(10)变址寻址30000H+0040H+00A0H=300E0H(11)基址变址寻址30000H+0100H+0100H-0040H=301C0H (12)基址变址寻址20000H+00A0H+0100H+0010H=201B0H (13)变址寻址30000H+2000H+0002H=32002H(14)基址变址寻址41000H+2000H+0100H+0002H=43102H 3.3第一种:MOV AX,[02C0H]第二种:MOV AX,[BP]第三种:MOV AX,0240H[BX]第四种:MOV AX,0100H[DI]第五种:MOV AX,0220H[SI](只要物理地址为095C0H即可)3.4(1)错,类型不匹配(2)错,类型二义性(3)对(4)错,立即数不能直接送入段寄存器(5)错,字节单元无法存放PUSH的值(6)对(7)对(8)错,不能把数据从段寄存器传入段寄存器(9)错,源操作数与目的操作数不能同时为存储器操作数(10)错,操作数类型二义性(11)错,XCHG指令的两个操作数都不能为立即数(12)错,类型不匹配(13)错,操作数类型二义性(14)错,RCL移位不为1时,必须用CL寄存器来操作(15)错,不能传送入段寄存器CS(16)错,目的操作数不能为立即数(17)错,格式不正确(18)错,变址寄存器不能使用寄存器BP(19)错,基址寄存器不能使用寄存器SI(20)错,目的操作数必须为通用寄存器3.5(1)(CL)=0F6H(2)(1E4F6)=5678H(3)(BX)=0056H (AX)=1E40H(4)(SI)=00F6H (DS)=1E40H (1E4F6H)=0024H (5)(CX)=00F6H (AX)=5678H (09226H)=1234H 3.6MOV是数据传送指令,LEA是取地址指令。

计算机组成与汇编语言第3章作业

计算机组成与汇编语言第3章作业

计算机组成与汇编语言第3章作业计算机组成与汇编语言第3章作业II 3.2存储器由哪些基本部分组成?每部分作用是什么?[答案]存储器由存储体、地址寄存器 MAR、数据寄存器MDR、地址译码驱动电路、读/写控制逻辑、读/写驱动器等六个部分组成。

CPU将n位地址码通过地址总线送入存储器中的地址寄存器MAR,地址译码驱动电路包含译码器和驱动器两部分。

译码器将地址总线输入的地址码转换成与其对应的译码输出线上的高电平或低电平信号,以表示选中了某一单元,并由驱动器提供驱动电流去驱动相应的读/写电路,实现对2n个片内存储单元的选址。

被译码选中的存储单元,在读/写控制逻辑的作用下,其读/写信息经读/写驱动器驱动放大存于存储器中的数据寄存器 MDR或从 MDR写入选中的存储单元,可见MDR是为了协调CPU与存储器之间在速度上的差异设置的,用于暂时存放存储器读写的数据。

■ 3.3存储器的主要技术指标有哪些?是什么含义?[答案]一个存储器的性能通常从容量、速度、价格和可靠性四方面来衡量。

(1)存储容量:存储容量是指一个存储器所能够容纳的二进制信息量,它反映了存储空间的大小。

存储容量通常用字节(B)数来表示,也有用存储器的存储字位数与地址寄存器的编址数的乘积表示。

(2)存储速度:通常用存取时间和存取周期来衡量存储器的存储速度。

存取时间也称为访问时间或读/写时间,是指从启动一次存储器操作到完成该操作所经历的时间。

存取时间越短,存取速度越快。

存取周期是启动两次独立的存储器操作所需的最小时间间隔,它包括了 CPU读/写数据总线的时间。

通常存取时间略小于存取周期。

(3)存储器的可靠性:指在规定的时间内存储器无故障读 /写的概率。

通常用平均无故障时间 MTBF来衡量,MTBF可以为两次故障之间的平均时间间隔,间隔越长说明存储器的性能越好。

(4)存储器的性能/价格比:是衡量存储器经济性能的一个综合性指标。

性能主要是指存储容量、存储速度和可靠性。

汇编语言CH3练习参考答案

汇编语言CH3练习参考答案

汇编语言程序设计练习参考答案(第三章 80x86的指令系统与寻址方式)1.(1)立即寻址-(2)直接寻址7237H(3)使用BX的寄存器寻址-(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.(1) ADD DX,BX(2) ADD AL,[BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H] ,2A59H(5) ADD AL ,0B5H3.(1)MOV BX,OFFSET BLOCK+0AHMOV DX ,[BX](2)MOV SI,OAHMOV DX,BLOCK[SI] 或MOV DX,SI+BLOCK(3) MOV BX ,OFFSET BLOCK 或LEA BX,BLOCKMOV SI,OAHMOV DX,[BX][SI]4.(1) MOV AX,1200H 1200H => AX = 1200H(2) MOV AX,BX BX = 0100H => AX = 0100H(3) MOV AX,[1200H] ((ds)*10h+1200h) = (21200h) = 4C2AH => AX = 4C2AH(4) MOV AX,[BX] ((ds)*10h+ (bx)) = (20199H) = 3412H => AX = 3412H(5) MOV 1100H[BX] ((ds)*10h+(bx)+1100h) = (21200H) = 4C2AH => AX = 4C2AH(6) MOV AX,[BX][SI] ((ds)*10h+(si)+(bx)) = (20102H) = 7856H => AX = 7856H(7) MOV AX,1100H[BX][SI] ((ds)*10h+(si)+(bx)+1100h) = (21202hH) = 65B7H => AX = 65B7H注:原题(5)和题(7)中的1100后面漏了十六进制说明符“H”5.(1)当前指令的IP为2BC0H,段内直接转移指令占3个字节,因此下一条指令的地址(IP)值应该为2BC2H,于是转移的偏移地址为: 2BC2H+5119H = 7CDCH(2) 按题意,该指令为JMP WORD PTR [BX]((DS)*10H+(BX)) = (212A*10H+1200H) = (224A0H) = 0600H, 所以转移的偏移地址为0600H(3)按题意,该指令为JMP WORD PTR D[BX]((DS)*10H+(BX)+D) = (212A*10H+1200H+5119H) = (275B9H) = 098AH, 所以转移的偏移地址为098AH6.LDS BX ,[2000H]MOV AX,[BX]图示如图3.1注:为了只改变AX,不影响其它寄存器,本题可以做如下完善处理:PUSH DSPUSH BXLDS BX,[2000H]MOV AX,[BX]POP BXPOP DS图3.17. JMP SHORT OBJ指令占两个字节,存放在偏移地址为0624H的连续两单元中,因此这条指令执行完后下一条指令的偏移地址(即IP值)为0626H,因此转向地址OBJ的值分别为:(1)0626H + 0027H = 064DH(2) 0626H + 006BH = 0691H(3) 0626H + 0FFC6 = 05ECH8. 指令源操作数的寻址方式物理地址(1)MOV AX,0ABH 立即数寻址-(2)MOV AX,BX 寄存器寻址-(3)MOV AX,[100H] 存储器直接寻址(ds)*10H+0100H = 20100H (4)MOV AX,VAL 存储器直接寻址(ds)*10H+0050H = 20050H (5)MOV AX,[BX] 寄存器间接寻址(ds)*10H+(bx)= 20100H (6)MOV AX,ES:[BX] 存储器直接寻址(es)*10H+(bx)= 21100H (7)MOV AX,[BP] 寄存器间接寻址(ss)*10H+(bp)= 15010H (8)MOV AX,[SI] 寄存器间接寻址(ds)*10H+(si)= 200A0H (9)MOV AX,[BX+10] 寄存器相对寻址(ds)*10H+(bx)+10 = 2010AH (10)MOV AX,VAL[BX] 寄存器相对寻址(ds)*10H+(bx)+0050H = 20150H (11)MOV AX,[BX][SI] 基址变址寻址(ds)*10H+(bx)+(si)= 201A0H (12)MOV AX,VAL[BX][SI] 相对基相变址寻址(ds)*10H+(bx)+(si)+0050H = 201F0H9.(1)MOV AX, [BX+0CH]MOV ZREO ,AX(2)MOV AX,ARRAY[BX]MOV ZREO,AX10.MOV AX,TABLE 把符号地址TABLE所给出的字存储单元中的内容送给AX,指令执行完后,(AX)=1234HLEA AX,TABLE 把符号地址TABLE 的有效地址(这里是TABLE的偏移量)送给指定寄存器AX,指令执行完后,(AX)=0032H11.分配的存储单元如图3.2所示。

汇编语言程序设计第四版第3章课后答案

汇编语言程序设计第四版第3章课后答案

汇编语言程序设计第四版第3章课后答案第3章课后答案1. 简答题1) 什么是机器代码?机器代码是计算机能够直接执行的二进制指令形式。

每个机器代码指令都对应着特定的操作,如加法、乘法、跳转等。

2) 简要解释高级语言和低级语言的区别。

高级语言是相对于机器语言而言的,它使用更接近自然语言的语法,提供了更多的抽象和封装,便于程序员编写和维护。

低级语言是直接面向硬件的,更加底层和繁琐,需要人工管理更多的细节。

3) 在汇编语言中,标号有什么作用?标号在汇编语言中用于标识一个程序或一段代码的起始位置,它可以被跳转指令引用,使程序执行流程可以根据条件或需求进行跳转。

4) MOV指令和ADD指令有什么区别?MOV指令用于将一个值从一个位置复制到另一个位置,而ADD指令用于将两个值相加并将结果存储在指定位置。

MOV指令只进行简单的值传递,ADD指令涉及运算操作。

5) 什么是汇编器?它的作用是什么?汇编器是一种将汇编语言转化为机器码的工具。

它将汇编语言源代码转换为机器可以直接执行的二进制指令,使程序能够在计算机上运行。

2. 选择题1) 在一台计算机上,每个指令都以二进制表示。

这个二进制串被解释成对应的操作。

这句话描述了:a) 汇编语言b) 机器码 (正确答案)c) 高级语言2) MOV指令用于:a) 在寄存器之间传递数据 (正确答案)b) 进行加法运算c) 进行跳转操作3) 汇编语言的源代码以什么文件扩展名保存?a) .asm (正确答案)b) .exec) .txt4) 在汇编语言中,用于标识起始位置的符号称为:a) 操作码b) 标号 (正确答案)c) 寄存器5) 汇编器的作用是:a) 将机器码转换为汇编语言b) 将汇编语言转换为机器码 (正确答案)c) 将高级语言转换为机器码3. 程序设计题编写一个汇编程序,实现将两个数字相加的功能。

```asmDATA SEGMENTNUM1 DB 10NUM2 DB 20RESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV AL, NUM1ADD AL, NUM2MOV RESULT, ALMOV AH, 4CHINT 21HCODE ENDSEND START```程序解读:1) 首先声明了一个数据段(DATA SEGMENT),其中定义了NUM1和NUM2两个字节变量,用于存储待加的两个数字;RESULT 变量用于存储结果。

汇编基本命令第三章习题有答案

汇编基本命令第三章习题有答案

第三章10学时200题1.根据以下要求,写出对应的汇编语言指令(1)把BX和DX寄存器内容相加,结果存入DX寄存器。

(2)使用BX和SI寄存器进行基址变址寻址,把存储器中一字节内容与AL内容相加,结果存入存储单元。

(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式,把存储器中一个双字与ECX 相加,结果存入ECX。

(4)用偏移地址1020H直接寻址,把存储单元一个字内容与立即数3相加,结果存入存储单元。

(5)将AL寄存器内容与立即数120相加,结果存入AL寄存器。

答:(1)ADD DX, BX(2)ADD [BX][SI], AL(3)ADD ECX, [BX+0B2H](4)ADD WORD PTR[1020H], 3(5)ADD AL, 1202.求以下各十六进制数与62A8H之和,并根据结果写出标志位SF、CF、ZF、OF的值。

(1)1234H (2)4321H (3)0CFA0H (4)9D60H (5)0FFFFH答:(1)1234H+62A8H=74DCH SCZO= 0000(2)4321H+62A8H=0A5C9H SCZO= 1001(3)0CFA0H+62A8H=3248H SCZO= 0100(4)9D60H +62A8H=0008H SCZO= 0100(5)0FFFFH+62A8H=62A7H SCZO= 01003.求以下各十六进制数与4AE0H之差,并根据结果写出标志位SF、CF、ZF、OF的值。

(1)1234H (2)5D90H (3)9076H (4)0EA04H (5)0FFFFH答:(1)1234H-4AE0H=0C754H SCZO= 1100(2)90H-4AE0H=12B0H SCZO= 0000(3)9076H-4AE0H=4597H SCZO= 0001(4)0EA04H-4AE0H=9F24H SCZO= 1000(5)0FFFFH-4AE0H=0B51FH SCZO= 10004.写出执行以下计算的指令序列,其中各变量均为16位有符号数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。

3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。

(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

(5) 把数0B5H与(AL)相加,并把结果送回AL中。

答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

(1) MOV AX, 1200H(2) MOV AX, BX(3) MOV AX, [1200H](4) MOV AX, [BX](5) MOV AX, 1100[BX](6) MOV AX, [BX][SI](7) MOV AX, 1100[BX][SI]答:(1) (AX)=1200H(2) (AX)=0100H(3) (AX)=4C2AH(4) (AX)=3412H(5) (AX)=4C2AH(6) (AX)=7856H(7) (AX)=65B7H3.5 给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,试为以下的转移指令找出转移的偏移地址。

(1) 段内直接寻址(2) 使用BX及寄存器间接寻址方式的段内间接寻址(3) 使用BX及寄存器相对寻址方式的段内间接寻址答:(1) JMP NEAR PTR 5119H ;(IP)=5119H+((IP)+03H)=7CDCH,物理地址PA=09CDCH (IP)+03H是JMP NEAR PTR 5119H指令的下一条指令的首地址。

(2) JMP WORD PTR [BX] ;(IP)=((DS)*10H+(BX))=0600H,PA=02600H(3) JMP D[BX] ;(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH3.6 设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。

答:MOV BX, [2000H] ;图示如上所示。

MOV AX, [2000H+2]MOV ES, AXMOV AX, ES:[BX]3.7 在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1) 27H,(2) 6BH,(3) 0C6H,试问转向地址OBJ的值是多少?答:(1) OBJ=0624H+02H+27H=064DH(2) OBJ=0624H+02H+6BH=0691H(3) OBJ=0624H+02H+0C6H=05ECH ;C6H对应的负数为-3AH(向上转移,负位移量)3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名V AL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH (2) MOV AX, BX(3) MOV AX, [100H] (4) MOV AX, V AL(5) MOV AX, [BX] (6) MOV AX, ES:[BX](7) MOV AX, [BP] (8) MOV AX, [SI](9) MOV AX, [BX+10] (10) MOV AX, V AL[BX](11) MOV AX, [BX][SI] (12) MOV AX, V AL[BX][SI]答:(1) 立即方式;操作数在本条指令中(2) 寄存器寻址方式;操作数为(BX)=0100H(3) 直接寻址方式;PA=20100H(4) 直接寻址方式;PA=20050H(5) BX寄存器间接寻址方式;PA=20100H(6) 附加段BX寄存器间接寻址方式;PA=21100H(7) BP寄存器间接寻址方式;PA=15010H(8) SI寄存器间接寻址方式;PA=200A0H(9) BX寄存器相对寻址方式;PA=20110H(10) BX寄存器相对寻址方式;PA=20150H(11) BX和SI寄存器基址变址寻址方式;PA=201A0H(12) BX和SI寄存器相对基址变址寻址方式;PA=201F0H3.9 在ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:ARRAY DW 23, 36, 2, 100, 32000, 54, 0ZERO DW ?(1) 如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元。

(2) 如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元。

答:(1) MOV AX, [BX+(7-1)*2]MOV [BX+(7)*2], AX(2) MOV AX, ARRAY [BX]MOV ARRAY [BX+2], AX3.10 如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOV AX, TABLELEA AX, TABLE答:MOV AX, TABLE是将TABLE单元的内容送到AX,(AX)=1234HLEA AX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0032H3.11 执行下列指令后AX寄存器中的内容是什么?TABLE DW 10, 20, 30, 40, 50 ;000AH, 0014H, 001EH, 0028H, 0032HENTRY DW 3┇MOV BX, OFFSET TABLEADD BX, ENTRYMOV AX, [BX]答:(AX)=1E00H (TABLE的存储方式如右图所示)3.12 下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:CSTRING DB …BASED ADDRESSING‟请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。

答:MOV DH, CSTRINGMOV DL, CSTRING+7-13.13 已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。

试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。

答:堆栈区和SP的内容变化过程示意图如下左图所示。

3.14 设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。

请写出两条指令把字变量X装入AX寄存器。

答:MOV BX, [2000H]MOV AX, ES:[BX]3.15 求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。

(1) 1234H (2) 4321H (3) CFA0H (4) 9D60H答:(1) 和为74D4H;SF=0,ZF=0,CF=0,OF=0(2) 和为A5C1H;SF=1,ZF=0,CF=0,OF=1(3) 和为3240H;SF=0,ZF=0,CF=1,OF=0(4) 和为0000H;SF=0,ZF=1,CF=1,OF=03.16 求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF的值。

(1) 1234H (2) 5D90H (3) 9090H (4) EA04H答:(1) 差为C754H;SF=1,ZF=0,CF=1,OF=0(2) 差为12B0H;SF=0,ZF=0,CF=0,OF=0(3) 差为45B0H;SF=0,ZF=0,CF=0,OF=1(4) 差为9F24H;SF=1,ZF=0,CF=0,OF=03.17 写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。

(1) Z←W+(Z-X) (2) Z←W-(X+6)-(R+9)(3) Z←(W*X)/(Y+6),R←余数(4) Z←((W-X)/5*Y)*2答:(1) MOV AX, Z ;以下程序都未考虑带符号数的溢出SUB AX, XADD AX, WMOV Z, AX(2) MOV BX, XADD BX, 6MOV CX, RADD CR, 9MOV AX, WSUB AX, BXSUB AX, CXMOV Z, AX(3) ADD Y, 6MOV AX, WIMUL XIDIV YMOV Z, AXMOV R, DX(4) MOV AX, WSUB AX, XCWDMOV BX, 5IDIV BXIMUL YSHL AX, 1 ;((DX),(AX))*2RCL DX, 13.18 已知程序段如下:MOV AX, 1234H ;(AX)=1234H,标志位不变MOV CL, 4 ;(AX)和标志位都不变ROL AX, CL ;(AX)=2341H,CF=1,SF和ZF不变DEC AX ;(AX)=2340H,CF=1不变,SF=0,ZF=0MOV CX, 4 ;(AX)和标志位都不变MUL CX ;(AX)=8D00H,CF=OF=0,其它标志无定义INT 20H试问:(1) 每条指令执行完后,AX寄存器的内容是什么?(2) 每条指令执行完后,进位、符号和零标志的值是什么?(3) 程序结束时,AX和DX的内容是什么?答:(1) 见注释;(2) 见注释;(3) (AX)=8D00H,(DX)=03.19 下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?MOV AX, 0 ;(AX)=0, 标志位不变DEC AX ;(AX)=0FFFFH, CF不变,SF=1,ZF=0,OF=0ADD AX, 7FFFH ;(AX)=7FFEH, CF=1,SF=0,ZF=0,OF=0ADD AX, 2 ;(AX)=8000H, CF=0,SF=1,ZF=0,OF=1NOT AX ;(AX)=7FFFH, 标志位不变SUB AX, 0FFFFH ;(AX)=8000H, CF=1,SF=1,ZF=0,OF=1ADD AX, 8000H ;(AX)=0,CF=1,SF=0,ZF=1,OF=1SUB AX, 1 ;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0AND AX, 58D1H ;(AX)=58D1H, CF=0,SF=0,ZF=0,OF=0SAL AX, 1 ;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1SAR AX, 1 ;(AX)=0D8D1H, CF=0,SF=1,ZF=0,OF=0NEG AX ;(AX)= 272FH, CF=1,SF=0,ZF=0,OF=0ROR AX, 1 ;(AX)= 9397H, CF=1,SF和ZF不变,OF=1答:见注释。

相关文档
最新文档