NEW_ADDRESS:
…比较字符串OLDS和NEWS是否相同,若不相同则转到NEW_ADDRESS执行,否则转到
OLD_ADDRESS
14. MOV CX, L LEA DI, ARRAY MOV AL, 20H CLD
REPNE SCASB
JNZ NOT_FOUND …NOT_FOUND:
…试回答上述程序段完成的功能是什么?
在长度为L的字符串ARRAY中查找空格,若有空格在顺序执行,否则转向NOT_FOUND。 六、计算题(共2小题)
1. 将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少? 二进制为 01100100B,十六进制为64H 2. 假设(DS)=0C00H,(BX)=0210H,对于指令MOV DS:100H[BX],AL,其目的操作
数的物理地址为多少?
EA = (BX)+0100H = 0310H,物理地址 = 0C000H + 0310H = 0C310H 七、程序设计题(共4题)
1. 试编写一程序片段,实现BL高4位与低4位相互交换 MOV CL, 4 ROL BL, CL
2. 试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功能(AX中的
数据理解为补码) MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX ADD AX, 14 SAR AX, 1
3. D1 DW ?, ? D2 DW ?, ?
定义了两个双精度数。编写一条宏定义DSUB,完成双精度数D1 减去双精度数D2,差存放在D2中,两个双精度数为变元。 DSUB MACRO D1,D2
MOV AX, D1 MOV DX, D1+2 SUB AX, D2 SBB DX, D2+2 MOV D2, AX MOV D2+2, DX ENDM
- 11 -
或
DNEG MACRO D1,D2 MOV EAX, D1 SUB EAX, D2 MOV D2, EAX ENDM
4.现有下列数据段:
DATA SECMENT
STR1 DB ‘ABCDEFGHIJKL’ COUNT EQU $—STR1
BUF DB COUNT DUP (0) DATA ENDS
试用串指令编写一个完整的程序:实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一个字符送到BUF的第一个单元)。
DATA SECMENT
STR1 DB ‘ABCDEFGHIJKL’ COUNT EQU $—STR1
BUF DB COUNT DUP (0) DATA ENDS CODE SEGMENT
ASSUME CD:CODE, DS:DATA,ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES,AX
LEA SI, BUF—1 LEA DI, BUF
MOV CX, COUNT
CLD STD
或 LOP: MOVSB LOP: MOVSB
SUB SI, 2 ADD DI, 2 LOOP LOP LOOP LOP MOV AH, 4CH INT 21H CODE ENDS END START
- 12 -