19. 执行如下程序段后,(AL)= ?
buf db 41H, 42H, 43H, 44H, 45H
LEA BX, BUF MOV AL, 3 XLAT
20. 以字变量BUF为首址的存储单元中存放了数量不超过100的有符号数;下列程序段统计了其中正数(含0)和负数的个数,并分别存放到BL,BH中。 DATA SEGMENT
BUF DW -1,10,5,0FF12H,8789H,COUNT EQU DATA ENDS
??
AND BX,
LEA SI,BUF MOV CX,COUNT
AA:CMP ,0 INC BL
BB:INC BH CC:ADD SI,2
??21、RADIX是一个将AX中的十六位无符号二进制数转换成由BX内容指定的不大于10进制的数的子程序。它将所求的各位数字的ASCII码按高位在前、低位在后的顺序存放在以DI为指针的字节存取区中。
RADIX PROC
PUSH CX PUSH DX MOV CXR1:
DIV BX PUSH DX INC CX CMP JNE R1
R2:
ADD AL MOV [DI] INC DI LOOP R2
POP CX RET RADIX ENDP
,0 ,30H ,AL ,0 22. 编写完整的程序:设在以BUF 为首址的字存储区中存储了多个有符号数,试编写一完整的程序,求出其中所有正数的和,存放到 P_SUM 字存储区中,并将其中所有的负数,依次存放到NEG_BUF为首址的字存储区中。
23. 分析思考
已知某次上机题为:从键盘输入一个字符,若为大写字母A则显示输出“ASSEMBLY LANGUAGE.”; 若为大写字母P则显示输出“PASCAL LANGUAGE.”; 若为大写字母Q则程序退出;若为其他键则显示输出“OTHERS.”。这三种信息在屏幕上应单独占一行。
某学生编写源程序后,用MASM(V6.)和LINK将源程序转换成可执行程序。执行后发现: (1) 当按下A时,屏幕上显示如下: A
ASSEMBLY LANGUAGE.OTHERS.
(2)接着按P时,上述第二行的内容又变成了: PASCAL LANGUAGE.E.OTHERS.P
该学生修改了数据段定义后就达到了题目的要求。请按实验报告的要求书写一份实验报告。并回答:对修改前的程序,如果完成上述(1)(2)操作之后,按下字母B ,屏幕上显示的信息是怎样的?
24 设一个程序由两个模块MAIN.ASM 和 SUBP.ASM组成。 MAIN.ASM 程序如下: .386
EXTRN CONVERT:NEAR
_________________________________ STACK SEGMENT USE16 STACK DB 200 DUP(0) STACK ENDS
DATA SEGMENT USE16 RESULT DB 200 DUP(0) TAB DB 'ABCDEFGHIJ' DATA ENDS
CODE SEGMENT USE16 PARA PUBLIC ‘CODE’ ASSUME CS:CODE, DS:DATA, SS:STACK BEGIN: MOV AX, DATA MOV DS, AX MOV BX, 0 LEA DI, RESULT NEXT: MOV AH, 1 INT 21H CMP AL, 0DH JE EXIT