文档库 最新最全的文档下载
当前位置:文档库 › 编程题答案

编程题答案

编程题答案
编程题答案

34H 03H 04H BUF BUF+1 BUF+2

方法二:

CODE SEGMENT

ASSUME CS:CODE

START:MOV AL,05H

CALL Liuweipei

MOV AH,4CH

INT 21H

Liuweipei PROC

CMP AL,10

JC K1

ADD AL,37H

JMP L2

K1: ADD AL,30H

L2: MOV DL,AL

MOV AH,2

INT 21H

RET

Liuweipei ENDP

CODE ENDS

END START

编程题

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 SHR AL,CL MOV BUF+1,AL MOV AL,BUF AND AL,0FH MOV BUF+2,AL MOV AH,4CH

INT 21H

CODE ENDS

END START

2.编制一子程序,将AL 中一位十六进制数转换为对应的ASCII 码并用2号DOS 功能调用显示出来,输入参数:被转换的十六进制数已在AL 中。

方法一: D:\ZQL>type exp12.asm CODE SEGMENT ASSUME CS:CODE START:MOV AL,0DH CALL Liuweipei MOV AH,4CH INT 21H Liuweipei PROC CMP AL,10 JC K1 ADD AL,7 K1: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H RET Liuweipei ENDP CODE ENDS END START 方法二:

MOV AL,BUF

MOV BUF+2,AL

AND BUF+2,0FH

MOV CL,4

SHR AL,CL

MOV BUF+1,AL

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 X 1, X 2, X 3,……,X 50

NUMBER DB X

RESULT DB ? 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 ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,CONT MOV BX,0 LOP: CMP AGE[BX],100 JB NEXT

INC SUM

相关知识见59面 和打印出的第5章第四

大题的第3小题一样!

NEXT: INC BX

LOOP LOP

MOV AH,4CH

INT 21H

CODE ENDS

END START

STRING D 0 A B C $ D ……

DI

6.设有DX:AX 构成一个32位数据,从AX 的低位(第0位)开始,逐位向高位和DX 置1,置1的个数由CX 的内容确定( 已知 CX<32 )。试编制一程序段,实现上述要求。

XOR AX,AX

XOR DX,DX CF D 15 DX D 0 CF D 15 AX 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,’$’

INC BX REPNE SCASB

LOOP N JZ DONE

MOV SIGN,0 MOV SIGN,0

JMP EXIT0 JMP EXIT0

DONE: MOV SIGN,1 DONE: MOV SIGN,1

EXIT0: HLT EXIT0: HLT

9. 从键盘接收一个4位十进制数据,并将其存入ASCII 缓冲区,若输入出错,则调用子程序输出出错信息,提示重新输入,试编写一程序完成上述功能。

DATA SEGMENT ASCII DB 4 DUP(?)

SIGN DB ‘Input error,Repeat! $’ DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,ASCII MOV CX,4 NEXT: MOV AH,01H INT 21H CMP AL,30H JB DONE CMP AL,39H JA DONE MOV [SI],AL INC SI LOOP NEXT

MOV AH,4CH

INT 21H

源程序:

DATA SEGMENT M1 DB ×× M2 DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX MOV CX,8

MOV AL,M1

XOR AH,AH LOP: SAL AL,1 RCR AH,1 D 7 D 0

LOOP LOP M1: MOV M2,AH MOV AH,4CH D 7 D 0

INT 21H M2: CODE ENDS

END START

和打印出的第7章

程序设计题一样!

DONE: CALL OUTPUT

JMP NEXT

OUTPUT PROC PUSH CX LEA DX,SIGN MOV AH,09H INT 21H POP CX RET OUTPUT ENDP

CODE ENDS

END START

若输入:3456 ASCII 33H 34H 35H 36H SI

10.编写一完整源程序,将M1中

的二进制数按位倒排送M2中,即

M1第0位送M2第7位,M1第1

位送M2第6位,依次类推。

数据段如下: DATA SEGMENT M1 DB YY ;任一字节数 M2 DB ? DATA ENDS

1 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1

11.在数据段中,WEEK 是星期一~星期日的英文缩写,DAY 单元中有数1~7(1 表示星期一,7表示星期日):

WEEK DB ‘MON ’, ‘TUE ’, ‘WED ’, ‘THU ’, ‘FRI ’, ‘SAT ’, ‘SUN ’ DAY DB X ; 数字1~7

试编写一源程序,根据DAY 的内容用单个字符显示功能调用(2号功能)去显示对应的英文缩写。

源程序:

DATA SEGMENT

WEEK DB ‘MON ’, ‘TUE ’, ‘WED ’, ‘THU ’, ‘FRI ’, ‘SAT ’, ‘SUN ’ DAY DB X

DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX XOR BX,BX MOV BL,DAY DEC BL MOV AL,BL SAL BL,1

ADD BL,AL

MOV CX,3

12.试编制一程序段,用串操作指令STOSB 实现向DA 数据区依次相间存放字母字符A,B,

C,……J 和数字字符0~9,相间顺序是:A,0,B,1,C,2,…,I,8,J,9(设DA 数据区所在段已由ES 指向)

源程序: MOV AL ,‘A ’

MOV AH ,‘0’ LEA DI ,DA DA A MOV CX ,20 0 CLD B

LOP :STOSB; (DI) AL DI DI+1 1

INC AL C

XCHG AL ,AH 2

LOOP LOP ……

LOP: MOV DL,WEEK[BX]

MOV AH,02H

INT 21H

INC BX

LOOP LOP

MOV AH,4CH

INT 21H

CODE ENDS

END START

ES DI

相关文档