汇编第三章习题答案

合集下载

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

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

第三章习题和思考题(汇编语言)一.填空题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.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寄存器的内容。

《汇编语言与接口技术》习题解答(第三章)要点

《汇编语言与接口技术》习题解答(第三章)要点

《汇编语言与接口技术》习题解答(第三章)要点以下是为大家整理的《汇编语言与接口技术》习题解答(第三章)要点的相关范文,本文关键词为汇编语言与接口技术,习题,解答,第三章,要点,习题,3.10,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。

习题3.10问题:?画图说明下列语句分配的存储空间及初始化的数据值解答:(1)byte_varDb'Abc',10,10h,'eF',3Dup(-1,?,3Dup(4))‘A’‘b’‘c’1010h‘e’‘F’-1-444...41h42h43h0ah10h45h46hffh-04h04h04h(2)word_varDw10h,-5,3Dup(?)3个10h0FbhFFh------10h-5???3.16解:movah,1;只允许输入小写字母int21hsubal,20h;转换为大写字母movdl,almovah,2int21h;显示3.18解:movax,bufxcmpax,bufYjgedonemovax,bufYdone:movbufZ,ax3.19解:.modelsmall.stack.databufxdw-7signxdb?.code.startupcmpbufx,0;te stbufx,80h1next:done:3.20解:movdl,’2’movax,bufxcmpax,bufYjenext1decdlnext1:cmpax,bufZjenext2decdlnext2:movah,2int21h3.22编制程序完成12h、45h、0F3h、6Ah、20h、0Feh、90h、0c8h、57h和34h等10个字节数据之和,并将结果存入字节变量sum中(不考虑溢出和进位)。

;wjxt322.asm.modelsmall.stack.datab_datadb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h;原始数据numequ10;数据个数sumdb?;预留结果单元.code.startupxorsi,si;位移量清零xoral,al;取第一个数movcx,num;累加次数again:addal,b_data[si];累加incsi;指向下一个数loopagain;如未完,继续累加movsum,al;完了,存结果.exit0end3.30解:lucaseprocpushbxmovbx,offsetstringcmpal,0jecase02jlnext;jnznextmovsignx,0jmpdonemovsignx,-1.exit0endcmpal,1jzcase1cmpal,2jzcase2jmpdonecase0:cmpbyteptr[bx],0jedonecmpbyteptr[bx],’A’next0:case1:next1:case 2:next20:next2:done:lucasejbnext0cmpbyteptr[bx],’Z’janext0addbyteptr[bx],20hincbxjmpcase0cmpbyteptr[bx],0jedonecmpbyteptr[bx],’a’jbnext1cmpbyteptr[bx],’z’jane xt1subbyteptr[bx],20hincbxjmpcase1cmpbyteptr[bx],0jedonecmpbyteptr[bx],’A’jbnext2cmpbyteptr[bx],’Z’jane xt20addbyteptr[bx],20hjmpnext2cmpbyteptr[bx],’a’jbnext2cmpbyteptr[bx],’z’janext2subbyteptr[bx],20hin cbxjmpcase2popbxretendp3习题3.1解答:参考教材(第60页)习题3.6问题:?给出你采用一个源程序格式书写的例题 3.1源程序解答:.modelsmall.stack.datastringdb’hello,Assembly!’,0dh,0ah,’$’.codestart:movax,@datamovds,axmovdx,offsetstringmovah,9int21hmovax,4c0 0hint21hendstart习题3.12解答:oRg伪指令习题3.13解答:段地址和偏移地址属性,类型属性习题3.26问题:?过程定义的一般格式是怎样的?子程序开始为什么常有push 指令、返回前为什么常有pop指令?下面完成16位无符号数累加的子程序有什么不妥吗?若有,请改正:解答:crazypRoc;crazypRocpushax;xorax,ax;xorax,axxordx,dx;xordx,dx again:addax,[bx];again:addax,[bx]adcdx,0;adcdx,0incbx;incbxincbx;incbx4loopagain;loopagainret;retenDpcrazy;crazyenDp字量求和子程序入口参数:bx=数据首址cx=数据个数出口参数:Ax=和的低字Dx=和的高字(进位部分)习题3.28问题:?请按如下说明编写子程序:;子程序功能:把用AscII码表示的两位十进制数转换为对应二进制数;入口参数:Dh=十位数的AscII码,DL=个位数的AscII码;出口参数:AL=对应的二进制数解答:asctobprocpushcx;先转换十位数anddh,0fhshldh,1;乘以10movch,dhshldh,1shldh,1adddh,ch;转换个位数anddl,0fh;十位数加个位数adddh,dl;设置出口参数moval,dhpopcxretasctobendp5以下是为大家整理的《汇编语言与接口技术》习题解答(第三章)要点(2)的相关范文,本文关键词为汇编语言与接口技术,习题,解答,第三章,要点,习题,3.10,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。

汇编语言沈美明答案汇编语言第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。

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

《汇编语言与接口技术》习题解答(第三章)

《汇编语言与接口技术》习题解答(第三章)

3.16 解:mov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示3.18 解:mov ax, bufXcmp ax, bufYjge 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,-1done: .exit 0end3.20 解:mov dl,’2’mov ax,bufXcmp ax,bufYje next1dec dlnext1: cmp ax,bufZje next2dec dlnext2: mov ah,2int 21h3.22 编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H 等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。

;wjxt322.asm.model small.stack.datab_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据num equ 10 ;数据个数sum db ? ;预留结果单元.code.startupxor si, si ;位移量清零xor al, al ;取第一个数mov cx, num ;累加次数again: add al, b_data[si] ;累加inc si ;指向下一个数loop again ;如未完,继续累加mov sum, al ;完了,存结果.exit 0end3.30 解:lucase procpush bxmov bx,offset stringcmp al,0je case0cmp al,1jz case1cmp al,2jz case2jmp donecase0: cmp byte ptr [bx],0je donecmp byte ptr [bx],’A’jb next0cmp byte ptr [bx],’Z’ja next0add byte ptr [bx],20h next0: inc bxjmp case0case1: cmp byte ptr [bx],0je donecmp byte ptr [bx],’a’jb next1cmp byte ptr [bx],’z’ja next1sub byte ptr [bx],20h next1: inc bxjmp case1case2: cmp byte ptr [bx],0je donecmp byte ptr [bx],’A’jb next2cmp byte ptr [bx],’Z’ja next20add byte ptr [bx],20hjmp next2next20: cmp byte ptr [bx],’a’jb next2cmp byte ptr [bx],’z’ja next2sub byte ptr [bx],20h next2: inc bxjmp case2done: pop bxretlucase endp习题3.1解答:参考教材(第60页)习题3.6问题:⏹给出你采用一个源程序格式书写的例题3.1源程序解答:.model small.stack.datastring db ’Hello, Assembly !’,0dh,0ah,’$’.codestart: mov ax,@datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hend start习题3.12解答:ORG伪指令习题3.13解答:段地址和偏移地址属性,类型属性习题3.26问题:⏹过程定义的一般格式是怎样的?子程序开始为什么常有PUSH指令、返回前为什么常有POP指令?下面完成16位无符号数累加的子程序有什么不妥吗?若有,请改正:解答:crazy PROC ;crazy PROCpush ax ;xor ax,ax ;xor ax,axxor dx,dx ;xor dx,dxagain: add ax,[bx] ;again: add ax,[bx]adc dx,0 ;adc dx,0inc bx ;inc bxinc bx ;inc bxloop again ;loop againret ;retENDP crazy ;crazy ENDP字量求和子程序入口参数:BX=数据首址CX=数据个数出口参数:AX=和的低字DX=和的高字(进位部分)习题3.28问题:请按如下说明编写子程序:;子程序功能:把用ASCII码表示的两位十进制数转换为对应二进制数;入口参数:DH=十位数的ASCII码,DL=个位数的ASCII码;出口参数:AL=对应的二进制数解答:asctob procpush cx;先转换十位数and dh,0fhshl dh,1 ;乘以10mov ch,dhshl dh,1shl dh,1add dh,ch;转换个位数and dl,0fh;十位数加个位数add dh,dl;设置出口参数mov al,dhpop cxasctob endp习题3.34-1问题:编写一个计算字节校验和的子程序。

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位十进制数。

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

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

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什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?答:逻辑地址:在存储器寻址中,程序员在程序中指定的地址称之为逻辑地址。

16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。

16。32位微机原理、汇编语言及接口技术(第二版)第三章课后习题答案。

>第3章3.1:汇编语言有什么特点解:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数,可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序3.2编写汇编语言源程序时,一般的组成原则是什么?解:(1)完整的汇编语言源程序由段组成(2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列(3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点(4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内(5)通常,程序还需要一个堆栈段3.3 MODEL伪指令是简化段定义源程序格式中必不可少的语句,它设计了哪7种存储模式?各用于创建什么性质的程序?解:3.4如何规定一个程序执行的开始位置,主程序执行结束应该如何返回DOS,源程序在何处停止汇编过程?解:开始位置:用标号指明返回DOS:利用DOS功能调用的4CH子功能来实现汇编停止:执行到一条END伪指令时,停止汇编3.5逻辑段具有哪些属性?解:段定位、段组合和段类型。

3.6给出采用一个源程序格式书写的例题3.1源程序例题3.1:创建一个在屏幕上显示一段信息的程序……解:stack segment stackdb 1024(0)stack endsdata segmentstring db 'Hello,Assembly!',0dH,0aH,‘$’data endscode segment 'code'assume cs:code,ds:data,ss:stackstart: mov dx,offset stringmov ah,9int 21hcode endsend start3.7DOS支持哪两种可执行程序结构,编写这两种程序时需要注意什么?解:(1). EXE程序程序可以有多个代码段和多个数据段,程序长度可以超过64KB通常生成EXE结构的可执行程序(2). COM程序只有一个逻辑段,程序长度不超过64KB需要满足一定条件才能生成COM结构的可执行程序(MASM 6.x需要采用TINY模式)3.8举例说明等价“EUQ”伪指令和等号“=”伪指令的用途解:符号定义伪指令有“等价EQU”和“等号=”:符号名 EQU 数值表达式符号名 EQU <字符串>符号名=数值表达式EQU用于数值等价时不能重复定义符号名,但“=”允许有重复赋值。

完整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章关系数据库标准语言SQL1 .试述sQL 语言的特点。

答:(l)综合统一。

sQL 语言集数据定义语言DDL 、数据操纵语言DML 、数据控制语言DCL 的功能于一体。

(2)高度非过程化。

用sQL 语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径,存取路径的选择以及sQL 语句的操作过程由系统自动完成。

(3)面向集合的操作方式。

sQL 语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。

(4)以同一种语法结构提供两种使用方式。

sQL 语言既是自含式语言,又是嵌入式语言。

作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。

(5)语言简捷,易学易用。

2 .试述sQL 的定义功能。

sQL 的数据定义功能包括定义表、定义视图和定义索引。

SQL 语言使用cREATE TABLE 语句建立基本表,ALTER TABLE 语句修改基本表定义,DROP TABLE 语句删除基本表;使用CREATE INDEX 语句建立索引,DROP INDEX 语句删除索引;使用CREATE VIEW 语句建立视图,DROP VIEW 语句删除视图。

3 .用sQL 语句建立第二章习题5 中的4 个表。

答:对于S 表:S ( SNO , SNAME , STATUS , CITY ) ;建S 表:CREATE TABLE S ( Sno C(2) UNIQUE,Sname C(6) ,Status C(2),City C(4));对于P 表:P ( PNO , PNAME , COLOR , WEIGHT );建P 表:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT INT);对于J 表:J ( JNO , JNAME , CITY);建J 表:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8),CITY C(4))对于sPJ 表:sPJ ( sNo , PNo , JNo , QTY);建SPJ 表:SPJ(SNO,PNO,JNO,QTY)CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2),QTY INT))4.针对上题中建立的4 个表试用sQL 语言完成第二章习题5 中的查询。

汇编第三章习题答案

汇编第三章习题答案

第三章习题答案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、4章习题答案

张雪兰等著汇编语言程序设计第3、4章习题答案

第三章习题答案2.分别指出下列指令中源操作数和目的操作数的寻址方式。

⑴ MOV BX,12 ⑵ MOV AL,128 ⑶ MOV [BX],DX⑷ MOV DS,AX ⑸ MOV VAR,8 ⑹ MOV [1000H],DX⑺ MOV 6[BX],CX ⑻ MOV AX,[BX][SI] ⑼ MOV TAB[BP][DI],AL答案:3.在8086=0200H,(BP)=0100H,VAR的偏移量为0060H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,请计算它们的物理地址是多少⑴ MOV BX,12 ⑵ MOV AL,128 ⑶ MOV [BX],DX⑷ MOV ES:[SI],AX ⑸ MOV VAR,8 ⑹ MOV [1000H],DX⑺ MOV 6[BX],CX ⑻ MOV [BX][SI],AX ⑼ MOV 6[BP][SI],AL答案:4.设(DS)LAB 的偏移量为0060H,(20300H)=50H,(20301H)=01H,(20306H)=0BH,(20306H)=05H,试确定以下JMP指令转向的物理地址是多少⑴ JMP BX ⑵ JMP 6[BX]答案:⑴∵ (IP)=(BX)=0300H∴转向的物理地址为12300H⑵∵ (IP)=(DS:[BX+6])=(20306H)=050BH∴转向的物理地址为1250BH5.设(CS)=2000H,CS:0100H单元有一条JMP SHORT LAB指令,若其中的位移量为:⑴ 60H ⑵ 80H ⑶ 0E0H试写出转向目标的物理地址是多少答案:因为CS:0100H处存放两字节指令,所以当执行该指令时(IP)=0102H⑴转向的物理地址为:(CS)*10H+(IP)+0060H=20162H⑵转向的物理地址为:(CS)*10H+(IP)+0FF80H=20082H⑶转向的物理地址为:(CS)*10H+(IP)+0FFE0H=200E2H6.试述以下指令的区别:⑴ MOV AX,3000H 与MOV AX,[3000H]⑵ MOV AX,MEM 与MOV AX,OFFSET MEM⑶ MOV AX,MEM 与LEA AX,MEM答案:⑴ MOV AX,3000H指令源操作数的寻址方式为立即寻址方式,指令执行结果为:(AX)=3000H。

汇编语言课后答案第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 说明下列指令中源操作数的寻址方式。

2023年物理中考试题汇编人教版八年级上册第三章物态变化(含答案)

2023年物理中考试题汇编人教版八年级上册第三章物态变化(含答案)

2023年物理中考试题汇编人教版八年级上册第三章物态变化(含答案)2023年物理中考试题汇编人教版八年级上册第三章物态变化一、单选题(本大题共16小题)1. (2023·青海省)雪融化成水,是哪种物态变化( )A. 熔化B. 液化C. 汽化D. 升华2. (2023·北京市)将某种金属制成的勺放入的水中,金属勺没有熔化;将该金属勺放入的水中,发现金属勺逐渐熔化。

该金属的熔点可能是( )A. B. C. D.3. (2023·吉林省)放在饮料中的冰块会越来越小,这个现象中包含的物态变化过程是( )A. 汽化B. 熔化C. 液化D. 凝华4. (2023·湖南省岳阳市)铸造青铜器时,工匠将铜料化为铜液注入模具,铜液冷却成形。

下列说法正确的是( )A. 固态铜料化为铜液需要放热B. 固态铜料化为铜液是熔化过程C. 铜液冷却成形需要吸热D. 铜液冷却成形是凝华过程5. (2023·四川省自贡市)下列现象属于熔化的是( )A. 初春,冰雪消融汇流成溪B. 盛夏,冰棒周围出现“白气”C. 金秋,阳光照射迷雾散去D. 寒冬,双溪水库水面结冰6. (2023·四川省乐山市)年北京冬奥会国家速滑馆采用新技术打造“最美的冰”,其原理中有一步骤是将液态二氧化碳打入地板管道,液态二氧化碳在管道中流动并迅速变为气态。

这一步骤中发生的物态变化是( )A. 熔化B. 凝固C. 液化D. 汽化7. (2023·贵州省)“走遍大地神州,醉美多彩贵州。

”梵净山主峰时而薄雾缭绕,时而雾散峰青。

此现象主要包含下列哪两种物态变化( )A. 熔化和凝华B. 液化和汽化C. 汽化和熔化D. 凝固和升华8. (2023·甘肃省兰州市)冬天,室外佩戴口罩,眼镜片上会出现白雾。

下列现象与上述“白雾”的成因相同的是( )A. 吃冰棒时常出现冰棒粘舌头的现象B. 冬天,大巴车窗内侧出现冰花C. 放置在冰箱外的蔬菜水果容易变蔫D. 水烧开后,壶嘴上方有大量白气冒出9. (2023·湖南省长沙市)古诗“荷风送香气,竹露滴清响”中,竹叶上出现露珠是( )A. 熔化现象B. 液化现象C. 凝华现象D. 汽化现象10. (2023·湖南省衡阳市)自然现象中蕴含着丰富的物理知识。

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

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

第三章答案: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是取地址指令。

汇编语言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所示。

51汇编第三章第四章部分题目的参考答案

51汇编第三章第四章部分题目的参考答案

第三部分 MCS-51汇编语言程序设计3-1对下述程序进行人工汇编。

ORG 2000HCLR CMOV R2,#3LOOP: MOV A,@ROADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R2,LOOPJNC NEXTMOV @RO,#01HSJMP $NEXT: DEC R0SJMP $解:首先可查出各指令的机器码,确定每条指令的起始地址。

然后,再计算出相对转移指令的偏移量。

结果如下:2000H:C3 CLR C2001H:7A 03 MOV R2,#32003H:E6 LOOP: MOV A,@RO2004H:37 ADDC A,@R12005H:F6 MOV @R0,A2006H:08 INC R02007H:09 INC R12008H:DA F9 DJNZ R2,LOOP200AH:50 04 JNC NEXT200CH:76 01 MOV @RO,#01H200EH:80 FE SJMP $2010H:18 NEXT: DEC R02011H:80 FE SJMP $(1)设R0=20H,R1=25H。

若(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,(26H)=6FH,(27H)=30H,则程序执行后,结果如何?解:此程序执行三次加法,被加数存在以20H为首地址的单元,加数则存在以25H为首地址的单元。

每次相加的结果如下:(20H)=(20H)+(25H)+Cy=80H+A0H+0 =20H,Cy=1(21H)=(21H)+(26H)+Cy=90H+6FH+1 =00H,Cy=1(22H)=(22H)+(27H)+Cy=A0H+30H+1=D1H,Cy=0程序将两个三字节相加,执行结果存在22H, 21H和20H中,结果为D1 00 20H。

(2)若27H单元内容改为6FH,则结果有何不同?解:此时,第三次相加的结果有变化:(22H)=A0H+6FH+01H=0IH,Cy=1。

汇编语言程序设计第四版第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 变量用于存储结果。

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

第三章习题答案3.1寻址方式有效地址(EA)(1)立即寻址无(2)直接寻址7237H(3)BX寄存器寻址无(4)BX寄存器间接寻址637DH(5)BX寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址寻址004FH3.2(1)ADD DX, BX(2)ADD AL, [BX][SI](3)ADD [BX+OB2H], CX(4)ADD WORD PTR[0524H], 2A59H(5)ADD AL,0B5H3.3(1)LEA BX, BLOCK+(6-1)*2MOV DX, [BX](2)LEA BX, BLOCKMOV DX, [BX+10](3)MOV SI, 10LEA BX, BLOCKMOV DX, [BX][SI]3.4(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7)65B7H3.5(1)EA=(IP)+D=7CD9H(2)物理地址=16×DS+(BX)=224A0H IP=0600H(3)物理地址=16×DS+(BX)+D=275B9H IP=098AHMOV BX, 2000HLDS SI, [BX]MOV AX, [SI]3.7(1)0626H+27H=064DH(2)0626H+6BH=0691H(3)0626H+0FFC6H=05ECH (注意符号扩展)3.8寻址方式物理地址(1) 立即数寻址无(2) 寄存器寻址无(3)直接寻址20100H(4)直接寻址20050H(5)寄存器间接寻址20100H(6)寄存器间接寻址21100H(7)寄存器间接寻址15010H(8)寄存器间接寻址200A0H(9)寄存器相对寻址20000H+0100H+0AH=2010AH (10)寄存器相对寻址20150H(11)基址变址寻址201A0H(12)相对基址变址寻址201F0H3.9(1)MOV AX, [BX+12]MOV ZERO, AX(2)MOV AX, ARRAY[BX]MOV ZERO, AX3.10(1)1234H(2)0032H1E00H3.130FFAAEH0FFAAFH0FFADH0FFAEH0FFAFH3.1562A0H 62A0H 62A0H 62A0H+1234H +4321H +CFA0H +9D60H74D4H A5C1H 3240H (1)0000H SF 0 1 0 0ZF 0 0 0 1 CF 0 0 1 1 OF 0 1 0 03.17(1)MOV AX, ZSUB AX, XADD AX, WMOV Z, AX(2)ADD X, 6ADD R,9MOV AX, WSUB AX, XSUB AX, RMOV Z, AX(3)MOV AX, WIMUL XADD 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×5MOV CX AXMOV AX, BX ;BX扩展到EAX(32位)CWD ;被除数扩展到64位IDIV CX ;除数Y限制为字(16位)SAL AX,1MOV Z, AX ;可以认为AX能存储下结果3.193.21NOT AXNOT DXADD AX, 1ADC DX, 03.23(1) BX=009AH (2) BX=0061H (3) BX=00FBH (4) BX=001CH (5) BX=0000H (6) BX=0001H3.25(1)+53×2 MOV AL, 35H (2) -49×2 MOV AL, CFHSAL AL, 1 SAL AL, 1 结果为6AH=106D 结果为9EH=-98D(3) +53÷2 MOV AL, 35H (4) -49÷2 MOV AL, CFHSAR AL, 1 SAR AL, 1 结果为1AH=26D 结果为E7H=-24D3.27(1)DX=0000 0000 0101 1100B(2)DX=0000 0000 0001 0111B(3)DX=0000 0101 1100 1000B(4)DX=0000 0000 0111 0010B(5)DX=0001 0000 0001 0111B(6)DX=0000 0000 1100 1101B(7)DX=0000 0000 1011 1001B(8)DX=0000 0101 1100 1100B(9)DX=0000 0000 1101 1100B3.29(1)LEA SI, CONAME (2) LEA SI, CONAME (3) LEA SI, CONAMELEA DI, PRLINE ADD SI, 19 ADD SI, 2MOV CX, 20 LEA DI, PRLINE LODSWCLD ADD DI, 19REP MOVSB STDREP MOVSB(4) LEA DI, PRLINE (5) LEA DI, CONAMEADD DI, 5 MOV AL, 20HSTOSW MOV CX, 20CLDREPNE SCASBJNZ NO-FOUNDMOV BH, AL…….NO-FOUND:3.31(1)CLD (2) LEA DI, STUDENT_ADDRMOV CX, 132 MOV AL, ‘-’MOV AL, 20H MOV CX, 9LEA DI, PRINT_LINE CLDREP STOSB REPNE SCASB第一个‘—’在DI-1中STDMOV AL, ‘REPNE SCASBDI-1中(4) LEA DI, STUDENT_NAME (5) CLDMOV AL, 20H MOV CX, 30MOV CX, 30 LEA SI, STUDENT_NAME CLD LEA DI, PRINT_LINE REPE SCASB REP MOVSBJNE NO-MATCH STDMOV CX, 30 MOV CX, 9LEA DI, STUDENT_NAME LEA SI, STUDENT_ADDR+8 MOV AL, ‘﹡’LEA DI, PRINT_LINE+131 REP STOSB REP MOVSBNO-MATCH:HLT3.37MOV AL, STA TUSTEST AL, 00101010BJZ ROUTINE-4 ;当全为0时JP ROUTINE-2 ;偶转移,当有2个1时(0的情况前一条已经跳转)CMP AL, 00101010BJZ ROUTINE-1 ;当为3个1时JMP ROUTINE-3 ;剩余情况,1个1时。

3.39(1) (2)(3) (4)(5) (6)(7) (8)(9)3.29(1) LEA SI,CONAME LEA DI,PRLINEMOV CX,20 CLDREP MOVSB(2) LEA SI,CONAME+19 LEA DI,PRLINE+19 MOV CX,20 STDREP MOVSB(3) LEA SI,CONAME+3 STD LODSB MOV AH,AL LODSB(4) LEA DI,PRLINE+5 CLD STOSB MOV AL,AHSTOSB(5) LEA DI,CONAMEMOV CX,20MOV AL,20HCLDREPNZ SCASBJNZ NOFOUNDMOV BH,20H************************************ 3.30 P112LEA DI,STRINGMOV CX,18MOV AL,'&'CLDREPNZ SCASBJNZ NOFOUNDDEC DIMOV [DI],20H************************************ 3.31(1) LEA SI,PRINT_LINEMOV AL,20HMOV CX,132CLDREP LODSB(2) LEA DI,STUDENT_ADDRMOV CX,9MOV AL,'_'CLDREPNZ SCASB(3) LEA DI,STUDENT_ADDR+8MOV CX,9MOV AL,'_'STDREPNZ SCASB(4) LEA SI,STUDENT_NAMECLDMOV CX,30AGA: LODSBCMP AL,20HJZ NEXTJMP SHORT NEXT1NEXT: LOOP AGANEXT1: JNZ EXITLEA DI,STUDENT_NAMEMOV AL,'*'MOV CX,30CLDREP STOSBEXIT:(5) LEA SI,STUDENT_NAMELEA DI,PRINT_LINEMOV CX,30CLDREP MOVSBLEA SI,STUDENT_ADDR+8LEA DI,PRINT_LINE+131MOV CX,9STDREP MOVSB************************************ 3.32LEA SI,OLDSLEA DI,NEWSMOV CX,5CLDREPZ CMPSBJNZ NEW_LESS************************************ 3.33(1) CMP DX,CXJA EXCEED(2) CMP BX,AXJG EXCEED(3) CMP CX,0JZ ZERO(4) CMP BX,AXJO OVERFLOW(5) CMP BX,AXJLE EQ_SMA(6) CMP DX,CXJBE EQ_SMA************************************ 3.34(1) L1(2) L1(3) L2(4) L5(5) L5************************************ 3.35(1)JNB JBE JNL JLE(2)JNB JBE JNL JLE(3)JNB JNBE JL JLE(4)JNB JNBE JNL JNLE(5)JNB JNBE JNL JNLE(6)JB JBE JL JLE(7)JB JBE JL JLE(8)JNB JNBE JL JLE************************************ 3.362P>=q AX=12p<q AX=2************************************ 3.37MOV AL,STATUSNOT ALTEST AL,2AHJZ ROUTINE_1TEST AL,0AHJZ ROUTINE_2TEST AL,22HJZ ROUTINE_2TEST AL,28HJZ ROUTINE_2TEST AL,02HJZ ROUTINE_3TEST AL,08HJZ ROUTINE_3TEST AL,20HJZ ROUTINE_3JMP ROUTINE_4************************************ 3.38(1) LOOP L20AX=5 BX=10H DX=0 CX=0(2) LOOPE L20AX=2 BX=4 DX=1 CX=3(3) LOOPNE L20AX=3 BX=7 DX=0 CX=2************************************11。

相关文档
最新文档