《实验复习题新(13页).doc》由会员分享,可在线阅读,更多相关《实验复习题新(13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-实验复习题新-第 13 页09实验复习题一、列出基于8086寄存器组的14个寄存器,并分别说明各寄存器的功能(对于标志寄存器,要求分别写出各标志位名称及功能)。写出基于8086CPU的各种寻址方式,并对与内存访问无关的和内存访问有关的寻址方式各举一例说明。二、请详细描述MASM的上机过程,要求写出各环节采用的扩展名、各环节的作用,然后说说列表文件、交叉引用文件是如何产生的及如何查看其内容的、有何作用,汇编过程显示了哪些信息?COM文件生成有什么要求。三、DEBUG调试的是哪种类型的文件?请写出DEBUG中使用的命令E、R、P、F、G、A、U、Q它们相应的功能,并分别说明使用场合,再各举一例说
2、明(注明例子的具体功能)。1如何在DEBUG中执行可执行程序(.EXE文件)?2为什么把书上的程序输入进debug中会报告有很多error?3debug中T命令与P命令使用有何差别?4debug里用d命令显示出来的数据怎么理解? 以D命令显示内容的其中一行。0B2E:0200 E8 DA E1 46 E8 AC DF 74-0D E8 45 00 AC E8 41 00 .F.t.E.A.为例说明。5如何找到debug.exe程序?在windows中如何出现debug来汇编?6如何在DEBUG调试程序中执行程序中的一段?7下面一段信息是使用DEBUG命令的结果, 则INT 10H的中断服务程序
3、的入口地址的偏移量是_,段基址是_。 -D 0:0 0000:0000 89 3E 7E BE F4 06 70 00-16 00 40 0B F4 06 70 00 0000:0010 F4 06 70 00 54 FF 00 F0-79 EA 00 F0 21 EA 00 F0 0000:0020 F3 1A A6 16 74 22 A6 16-57 00 40 0B 6F 00 40 0B 0000:0030 87 00 40 0B 9F 00 40 0B-B7 00 40 0B F4 06 70 00 0000:0040 C9 23 A6 16 4D F8 00 F0-41 F8 00
4、 F0 C5 03 4C CD 0000:0050 39 E7 00 F0 A0 19 BC 0C-76 01 02 E0 56 D4 00 F0 0000:0060 00 E0 00 F0 90 19 BC 0C-6E FE 00 F0 EE 06 70 000000:0070 53 FF 00 F0 A4 F0 00 F0 22 05 00 00 6C 56 00 C0四、利用系统功能调用(21H)如何实现输出一个字符、输入一个字符、输出一个字符串、输入一个字符串、返回操作系统,掌握其调用格式规范并能给出相应的实例(各例均需说明其功能),接收字符串能统计字符串中数字符号、大小字母的数量,输
5、入多位二、八、十六进制数送到指定寄存器中,以二、八、十六进制形式输出指定寄存器中内容。五、改错题1. 下列程序中至少有10个语法性的错,请将这些错误找出来。1: *EXAM? .?* 2: DSEG SEGMENT 3: ARGX DB 100 4: RLT DB ? 5: DSEG END 6: CSEG SEGENT 7: ASSUME CS:CSEG;DS:DSEG 8: BEGIN: MOV AX,DATA 9: MOV DS,AX 10: MOV AX,ARGX 11: OR AL,AL 12: JS ABS1 13: JE MOVE 14: CMP AL,8 15: JBE ONE
6、 16: CMP AL,0FH 17: JGE MOVE 18: SHL AL,2 19: ADD AL,ARGX 20: SUB AL,2 21: JMP MOVE 22: ONE ADD AL,10 23: JMP MOVE 24: ABS1 NEG AL,AL 25: MOVE MOV RLT,AX 26: HALT 27: DSEG ENDP 28: ENDS START 2. 下列程序中至少有10个语法性的错,请将这些错误找出来。1: ;*EXAM?.?* 2: DSEG SEGMENT 3: DATA DB 14H,26H,03H,8A,11H,FFH 4: MAX: DB ? 5
7、: DATA ENDS 6: CSEG SEGMENT 7: ASSUME CS:CSEG:DS:DSEG 8: SMAX MOV AX,DATA 9: MOV DS,AX 10: LEA SI,DATA 11: MOV AL,SI 12: AGAN: INC SI 13: MOV BL,SI 14: CMP BL,FFH 15: JE LOAD 16: CMP AL,BX 17: JA AGAIN 18: MOV AL,BL 19: ADD AL,ARGY 20: JR AGAIN 21: LOD: MOV MAX,AX 22: HALT 23: CSEG ENDP 24: ENDS SMA
8、X 3. 已知下述程序是从两个无符号数中选出较大者送入MAX中,但程序有错,请改正。1: DSEG SEGMENT2: DAX: DB A0H3: DAY DB 3004: MAX DW 05: DSEG END6: CSEG SEGMENT7: ASSUME CS:CSEG;DS:DSEG8: BEGIN: MOV DS,DSEG9: MOV AL,DAX10: CMP AL,DAY11: JG LMAX12: MOV AL,DAY13: LMAX MOV MAX,AL14: HLT15: CSEG ENDS16: END START 4.下面是从一组数据中找最大数的程序,该程序有逻辑性的错
9、误, 请将错误找出并改正过来。已知数据为不带符号的字数据, 并存放在LIST开始的单元中,数据的个数存放在CNT字单元,找出的最大值存放在MAX单元。 1: DSEG SEGMENT 2: LIST DW 1,200,30,400,0,7,4000 3: CNT DB 7 4: MAX DW ? 5: DSEG ENDS 6: CSEG SEGMNET 7: ASSUME CS:CSEG,DS:DSEG 8: FMAX: MOV DX,DSEG 9: MOV DS,AX 10: LEA SI,LIST 11: MOV CX,CNT 12: CLD 13: LODSW 14: DEC CX 15
10、: CMP AX,SI 16: JLE SMALL 17: LODSW 18: SMALL: INC SI 19: INC SI 20: DEC CX 21: LOOP AGAIN 22: MOV MAX,SI 23: HLT 24: CSEG ENDS 25: END START 5.下列程序求一组带符号字节数据的平均值, 数据的首地址为DATA, 数据个数存放在CNT字单元,但程序有逻辑错误,请将错误改正过来,使之完成预定功能。 1: DSEG SEGMENT 2: DATA DB 100,-100,90,20,-120,60 3: CNT DW 0005H 4: AVER DB ? 5:
11、 DSEG ENDS 6: CSEG SEGMENT 7: ASSUME CS:CSEG,DS:DSEG 8: MAIN PROC FAR 9: PUSH DS 10: XOR DX,DX 11: PUSH DX 12: MOV AX,DS 13: MOV DS,AX 14: MOV SI,OFFSET DATA 15: MOV CX,OFFSET CNT 16: AGAIN: ADD DL,SI 17: ADC DH,0 18: DEC CX 19: LOOP AGAIN 20: DIV CL 21: MOV AVER,AL 22: RET 23: MAIN ENDP 24: CSEG EN
12、DS 25: END MAIN 6. 下述程序执行后, 应将DATA数组中的最大值存入MAX单元, 数组元素为带符号字节数据, 数据个数在CNT单元。现已知程序有错, 请改正, 使之完成预定功能。1: DSEG SEGMENT 2: DATA DB 12H,203Q,56H,7E,63H,128 3: CNT DB 06 4: MAX DW 0 5: ASSUME CS:DSEG,CS:DSEG 6: FMAX MOV AX,SI 7: CMP AX,SI+1 8: JA FMAX1 9: MOV AL,SI+1 10: FMAX1: INC SI 11: DEC CX 12: LOOP FM
13、AX 13: RET 14: MAIN: PROC FAR 15: PUSH CS 16: XOR AX,AX 17: PUSH AX 18: MOV CX,CNT19: CALL FMAX 20: MOV MAX,AX21: RET 22: MAIN: ENDP 23: DSEG ENDP 24: END MAIN六、写出完成下列功能的程序段1将一个字节的立即数送到地址为NUM的存储单元中。2将一个8位立即数与地址为BUF的存储单元内容相加并放回BUF单元中。3将地址为ARRAY的存储单元中的字数据循环右移一位。4将16位立即数与地址为MEM的存储单元中的数比较。5测试地址为BUFFER的字
14、数据的符号位。6将AX寄存器及CF标志位同时清零。7用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。8用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。9用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX中。10用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中。11将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,和送到第三个存储单元中。12将AL中的两位BCD码分离,分别存放DL和DH中。13将DL中的低4位二进制数转换成16进制数的ASCII码。14将AL中的8位二进制数高4位和低4位交换。15将A
15、L和BL中的非压缩BCD码合并成一个压缩的BCD码(BL作高位),存在AL中。16将AL中的8位有符号数转换成它的绝对值。17用串扫描指令在一个字符串中查找字符*。18将输入的大写字母改变成小写输出。19输入一个字母,然后输出它的后续字母。20将DX:AX寄存器中的32位数向右移两位。21完成计算78。22. 编写完成下列功能的小程序段: 将寄存器AL的第4、3位变反,其余位保持不变。 将寄存器AL的第4、3位清零,其余位保持不变。 将寄存器AL的第4、3位置,其余位保持不变。 将寄存器AL的第4、3位写入MEM单元中的第4、3位,其余位保持不变。 将寄存器AL的第i位写入MEM单元的第i位,
16、其余位保持不变,i值在CL中。 将寄存器AL的第i+1、i位写入MEM单元的第i+1、i位,其余位保持不变,i值在CL中。23. 利用移位、传送和加法指令,完成AX与10的乘法运算。24. 编写指令序列,测试DL寄存器的低4位是否为0。25. 用尽可能少的指令分别实现下述功能 如果AH的第4,3位为00,则将AH清0,否则置全1。 如果AH的第4,3位为01,则将AH清0,否则置全1。 如果AH的第4,3位为10,则将AH清0,否则置全1。 如果AH的第4,3位为11,则将AH清0,否则置全1。 如果AH中的数据为偶数, 则将AL清0, 否则将AL置0FFH。 如果AH中的数据为正数, 则将A
17、L清0, 否则将AL置0FFH。 如果AH中的数据满足偶校验,则将AL清0,否则将AL置0FFH。 设AX和BX分别存放着一个无符号的整数, 如果AX中的数据是BX中数据的整数倍, 则将DX清0,否则将DX置全1。 如果BX中的数据与CX中的数据相加产生溢出, 则将AL清0,否则将AL置0FFH。26. 假设数据段定义如下: DATA SEGMENT STRING DB abcde COUNT = 5 DATA ENDS现想用指令REPNZ SCASB从地址STRING开始正向查找元素c,试写出有关的程序段。27. 假设数据段定义如下: DATA SEGMENT STR1 DB abcdef
18、STR2 DB abcdfe COUNT = 6 FLAG DB 0 DATA ENDS 现想用指令CMPSB比较两个串STR1和STR2是否相等,若相等则将FLAG单元置1,否则清0,试写出有关的程序段。28将DX:BX:AX中的数右移4位。七、程序填空题 (每空格只能填一条指令 )1下面程序段判断 CX 和 BX 中的符号位是否相同。如相同, AL 置 0 ,否则 AL 置 -1 。试在空白处填上合适的指令。 _ AND CX , 8000H _ MOV AL , 0FFH JMP EXIT ZERO : MOV AL , 0 EXIT : 2下面程序段是判AL和BL中的数据是否同号,若是
19、,则把AL中的数据变负并送到AH中,否则0AH。横线处填入适当指令(每处仅填一条指令)。 _ JNS K MOV AH, 0 JMP END0 K: _ MOV AH,AL END0:3下面程序执行后,AL的内容为ARRAY数组中的最小数,在空白处各填一条指令。 ARRAY DB 3,5, - 3, - 2,4,5, - 8,6 MOV CX,7 MOV DI,0 MOV AL,ARRAY A1: INC DI _ JLE A2 MOV AL,ARRAY DI A2: _4程序段的功能是依次产生09的10个ASCII码,并存入BUF1数据区,请在空白处填上指令(每一空白处仅填一条指令)。 BU
20、F1 DB 10 DUP (?) LEA BX, BUF1 MOV CX,10 XOR AL, AL LOP: MOV AH,AL ADD AL,30H _ INC BX _ INC AL LOOP LOP5以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。 BUF DB 5,6,7,58H,62,45H,127, COUNT EQU $-BUF MAX DB ? MOV BX,OFFSET BUF MOV CX,COUNT-1 MOV AL,BX LOP1:INC BX _ JAE NEXT MOV AL,BX NEXT:DEC CX _
21、MOV MAX,AL 6已知数据段DAT单元存放某一数N(-6N6)下面的程序段用查表法求数N的平方值,结果送SQR单元,请将程序填写完整。 TABLE DB 0, 1, 4, 9, 16, 25 DAT DB N SQR DB ? LEA BX, TABLE MOV AL, DAT _ JGE NEXT _ NEXT:XLAT HLT 7下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位BCD码存放在A3单元,低位BCD码存放在A2单元,再分别转换为对应的ASC码。请将程序补充完整。 MOV AL,A1 MOV CL,4 _ OR AL,30H MOV A3,AL
22、 MOV AL,A1 _ OR AL,30H MOV A2,AL 8现有下列数据段: DATA SEGMENT STR1 DB ABCDEFGHIJKL COUNT EQU $STR1 BUF DB COUNT DUP(0) DATA ENDS 下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。 MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF MOV CX,COUNT LOP: MOVSB _ LOOP LOP9已知存储器中有一个首地址为
23、 BUF 的 COUNT 个字节数据区。下列程序段把数据区中的每一项加 1 (不考虑溢出),请将程序填写完整。 BUF DB 45H , 79H , 0ABH , .,86H COUNT EQU _ LEA BX, BUF MOV CX, COUNT AGN: _ INC BX LOOP AGN HLT 10 NUM和NUM+1单元分别存有一个8位带符号数,下面程序段将两数中大者放NUM单元,小者放NUM+1单元,请在划线处各填一条指令补充完整。 MOV AL,NUM CMP AL,NUM+1 _ MOV NUM,ALDONE:11下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,
24、否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。 VAR1 DW VAR2 DW MOV AX,VAR1 MOV BX,VAR2 XOR AX,BX _ TEST BX,8000H _ MOV AX,0 NEXT:12下列程序段求数组FLD的平均值,结果在AL中。请将程序填完整(不考虑溢出) FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _ MOV CX, 8 XOR AX, AX R1:_ ADD SI, 2 LOOP R1 MOV CL, 8 IDIV CL HLT 13下面程序段是判断寄存器A
25、H和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。 _ AND AH,08H _ MOV AH,0FFH JMP NEXT ZERO:MOV AH,0 NEXT: 14设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。 TEST AX,8000H _ MOV PLW,BX JMP DONE K1:_ DONE: 15下面程序段完成将以 BUF 为首址的 100 个字节数据的位置颠倒过来,请在空白处各填上一条指令。 _ LEA SI , BUF MOV DI , SI ADD DI , 99NEXT :
26、MOV AL , SI _ MOV SI , AL INC SI DEC DI LOOP NEXT16下面程序段实现把 DA1 字单元内容取绝对值后送到 DA2 中,请各填一条指令。 DA1 DW DA2 DW ? MOV AX , DA1 _ JNS K _ K : MOV DA2 , AX 17DA1数据区中有50个字节数据,下面程序段将每个数据的低四位变反,高四位不变,并依次存入DA2数据区中。请将程序补充完整。 MOV CX,50 LEA SI,DA1 LEA DI,DA2 K1:MOV AL,SI _ MOV DI,AL INC SI INC DI DEC CX _ 18某程序段欲用
27、单个字符显示的2号DOS功能调用去显示一字符串“STRING”。试在下面空白处填上适当的指令 (每一空白处仅填一条指令)。 STR1 DB STRING,$ MOV BX,OFFSET STR1 LOP:MOV DL,BX MOV AH,02H INT 21H _ _ JNE LOP19下面程序段是判断 AL 和 BL 中第 4 位是否相同,如相同,则 AL 置全 0 ,否则 AL 置全 1 。试把空白处填上适当的指令。(每一空白处填一条指令) _ AND AL , 10H _MOV AL , 0FFH NEXT :20下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH
28、置全1。试把空白处填上适当指令。 _ AND AH,08H _ MOV AH,0FFH JMP NEXT ZERO:MOV AH,0 NEXT: 21以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。 BUF DB 5,6,7,58H,62,45H,127, COUNT EQU $-BUF MAX DB ? MOV BX,OFFSET BUF MOV CX,COUNT - 1 MOV AL,BX LOP1:INC BX _ JAE NEXT MOV AL,BX NEXT:DEC CX _ MOV MAX,AL22下面程序段是将BUFF单元的绝
29、对值送入DAR单元,请将空白处各填上一条指令 BUFF DW DAR DW ? MOV AX,BUFF _ JZ NEXT _NEXT:MOV DAR,AX23下面程序段完成用串指令在 DA1 开始的 26 个字节单元中依次存放 AZ 的 ASCII 码,在 DA2 开始的 26 个字节单元中依次存放 ZA 的 ASCII 码,请在横线处各填一条指令。 DA1 DB 26 DUP (?) DA2 DB 26 DUP (?) LEA DI , DA1 MOV AL , A MOV CX , 26 CLD LOP1 : STOSB _ LOOP LOP1 MOV CX , 26 LOP2 : _ STOSB LOOP LOP224设DX,AX中存放双字有符号数P,DX存放高位字。BX,CX中存放双字有符号数Q,BX存放高位字。下列程序完成P与Q比较大小操作。当PQ时,使AX=1,PQ时,使AX=2。将程序填写完整:CMP DX,BXJL L2_CMP AX,CX_L1:MOV AX,1JMP EXITL2:MOV AX,2EXIT: