内容发布更新时间 : 2024/12/23 14:59:06星期一 下面是文章的全部内容请认真阅读。
汇编语言程序设计 综合复习
yeqianyi ENDP
6.在主程序中,采用调用子程序方式将一组非压缩BCD在屏幕上显示出来。试在下面 程序段中填补上空缺的指令。
? ? ?
MOV BX,OFFSET feiyabcd MOV CX,NN
CALL,DISPLAY
? ? ?
DISPLAY PROC PUSH DX LOP: MOV DL,[BX] ADD DL,30H
MOV AH,02H
INT 21H INC BX LOOP LOP RET
DISPLAY ENDP
7.BUF DW 1,0,0AB1CH,582H,9,3A04H,9,0
? ? ?
LEA DI,BUF MOV CX,8 MOV AX,9 CLD
REPNZ SCASW JNZ K1
SUB DI,OFFSET BUF MOV DX,DI SHR DX,1 ADD DL,30H MOV AH,2 INT 21H K1:??
上述程序执行后 (1)程序完成的功能是 在BUF中找出第一次出现9的元素 ,显示输出的值是 5
8.在以String为首地址的内存区域存放了一个字符串,下面程序段的功能是实现将该串中所有字母字符依次送入BUFF缓冲区,试在程序中填补上空缺的指令。
String DB ‘123ABC051AF??049ADVWS’ N EQU $- String
共28页 第 21 页
汇编语言程序设计 综合复习
BUFF DB N DUP(?)
? ? ?
MOV CX,N MOV BX,0
MOV SI,0
yeqianyi: CMP String[BX], ‘A’ JB NEXT
CMP String[BX], ‘Z’ JA NEXT
MOV AL,String(BX) MOV BUFF[SI],AL INC SI NEXT: INC BX
LOOP yeqianyi HLT
9.下面程序段是将BUFF单元的绝对值送入DAR单元,请将空白处各填上一条指令。
BUFF DW ×××× DAR DW ?
? ? ?
MOV AX,BUFF
TEST AX,8000H JZ NEXT
NEG AX NEXT: MOV DAR,AX
共28页 第 22 页
汇编语言程序设计 综合复习
四、编程题
1.编一程序段将BUF字节单元中的数拆成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上。 D:\\ZQL>type exp11.asm
DATA SEGMENT BUF DB 34H,?,? CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF 方法二: MOV CL,4 MOV AL,BUF SHR AL,CL MOV BUF+2,AL MOV BUF+1,AL AND BUF+2,0FH MOV AL,BUF MOV CL,4 AND AL,0FH SHR AL,CL MOV BUF+2,AL MOV BUF+1,AL MOV AH,4CH INT 21H CODE ENDS END START
2.编制一子程序,将AL中一位十六进制数转换为对应的ASCII码并用2号DOS功能调用显示出来,输入参数:被转换的十六进制数已在AL中。 方法一: 方法二: D:\\ZQL>type exp12.asm CODE SEGMENT CODE SEGMENT ASSUME CS:CODE ASSUME CS:CODE START:MOV AL,05H START:MOV AL,0DH CALL Liuweipei CALL Liuweipei MOV AH,4CH MOV AH,4CH INT 21H INT 21H Liuweipei PROC Liuweipei PROC CMP AL,10 CMP AL,10 JC K1 共28页 第 23 页
34H 03H 04H BUF BUF+1 BUF+2 ADD AL,37H JMP L2 K1: ADD AL,30H L2: MOV DL,AL 汇编语言程序设计 综合复习
JC K1 ADD AL,7 K1: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H RET Liuweipei ENDP CODE ENDS
END START
3.用字符串指令编制一程序段,把以DAT1为首地址的数据区中的50个字节数据依次传送到以DAT2为首地址的数据区中。要求:在程序中按地址递增方式进行数据传送。 CLD
MOV CX,50 LEA SI,DAT1 LEA DI,DAT2 REP MOVSB
4.在以Block为首地址的字节单元中,存放了06计算(1)班的学生考试成绩。试编制一程序,利用学生的序号来查表得到该学生的成绩,设学生的序号在NUMBER单元,查表结果存入RESULT单元中。 DATA SEGMENT
Block DB X1, X2, X3,??,X50 NUMBER DB X RESULT DB ?
相关知识见59面 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX, Block
MOV AL, NUMBER XLAT
MOV RESULT, AL MOV AH,4CH
INT 21H
CODE ENDS
END START 5.在南昌市的湖坊乡,约有人口45000 ,试编写一程序统计一下该乡超过100岁以上的老人有多少,并将统计结果存放在SUM单元中。
DATA SEGMENT
AGE DB 25,31,6,101,90,71,116, … CONT EQU $-AGE SUM DB ?
共28页 第 24 页 和打印出的第5章第四大题的第3小题一样! 汇编语言程序设计 综合复习
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA NEXT: INC BX START: MOV AX,DATA LOOP LOP MOV DS,AX MOV AH,4CH MOV CX,CONT INT 21H MOV BX,0 CODE ENDS LOP: CMP AGE[BX],100 END START JB NEXT INC SUM
6.设有DX:AX构成一个32位数据,从AX的低位(第0位)开始,逐位向高位和DX置1,置1的个数由CX的内容确定( 已知 CX<32 )。试编制一程序段,实现上述要求。 XOR AX,AX
XOR DX,DX CF D15 DX D0 CF D15 AX D0 LOP: STC RCL AX,1 RCL DX,1 LOOP LOP
7.编写程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是“Y”,则转向YES程序段;如字符是“N”,则转向NO程序段;如果是其它字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列) KEY:MOV AH,1 (YES和NO分别是两程序段入口处的标号) INT 21H
CMP AL,‘Y’ JE YES
CMP AL,‘N’ JE NO JMP KEY
8. 在以STRING为首地址的存储区域存放了一个字符串,串的长度为50,查找其中是否有字符$,若有将SIGN单元置1,反之,将SIGN单元置0(只需写出有关的指令序列)
(1) 用比较条件转移指令实现。 (2)用重复操作前缀串搜索指令实现。
(1) MOV CX,50 (2) MOV CX,50 MOV BX,0 LEA DI,STRING N: CMP STRING[BX],’$’ CLD
JZ DONE MOV AL,’$’
共28页 第 25 页
DI STRING A B C $ D