内容发布更新时间 : 2024/12/23 4:51:57星期一 下面是文章的全部内容请认真阅读。
JNE LOP ;(AH)=10 上述程序运行后,AH和AL的内容分别是多少? 22. AA1 DB 10H DUP(2)
AA2 DW 10H DUP(0304H) ……
MOV BX , 0 ;设置数据指针 MOV AL , 0 ;设置累加器初值 MOV CX , 10 ;设置计数器初值 BB1: ADD AL , AA1[BX] ;累加 ADD AL , BYTE PTR AA2[BX] ;累加
INC BX ;修改数据指针 LOOP BB1 ;循环10次
上述程序段运行期间,当执行完 INC BX 且 (BX)=05H时,CX和AL中的内容分别是多少?
解:(AL)=2+4+2+3+2+4++2+3+2+4=28=1CH , (CX)=6 23.
DB1 DB 4 DUP (2,4,6,8) LEA BX , DB1 MOV CX , 10H MOV AX , 0 LOP: ADD AL , [BX] AND AL , 0FH CMP AL , 8 JBE NEXT INC AH
SUB AL , 08H NEXT:LOOP LOP
上述程序段执行后,(AX)=?如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=? (CX)=? 解:
29
由上表可知道,上述程序段执行后,(AX)=0600H,(CX)=0
如果LOOPNE指令替代LOOP指令,那么上述程序段执行后,(AX)=0300H (CX)=8 24. 下面程序段是判断寄存器AH和AL中第三位是否相同,如相同,AH置0,否则AH置非0。试在空白处填上适当的指令(一个空白处只填一条指令)。
AND AH , 08H
MOV AL , 0FFH JMP NEXT ZERO: MOV AH , 00 NEXT: ……
25. 试用两条指令完成对寄存器AH和AL分别加1,且AL中加1形成的进位加在AH最低位,AH中形成的进位加在AL的最低位. 解: INC AX , 0101H
ADC AL , 0
26. 在数据段中有一乘法表(TAB1~TAB9),乘数和被乘数分别在MUL1和MUL2的字节单元中.试编写一程序,用查表法求出(MUL1)*(MUL2)的乘积.数据段如下: DATA SEGMENT
TAB1 DB 1,2,3,4,5,6,7,8,9
TAB2 DB 2,4,6,8,10,12,14,16,18 TAB3 DB 3,6,9,12,15,18,21,24,27 TAB4 DB 4,8,12,16,20,24,28,32,36 TAB5 DB 5,10,15,20,25,30,35,40,45, TAB6 DB 6,12,18,24,30,36,42,48,54 TAB7 DB 7,14,21,28,35,42,49,56,63 TAB8 DB 8,16,24,32,40,48,56,64,72 TAB9 DB 9,18,27,36,45,54,63,72,81 MUL1 DB 3 MUL2 DB 6 PROD DB 0 DATA ENDS 解:
MOV BX,OFFSET DA1 MOV DL,MUL1 DEC DL MOV DH,00H ADD BX.DX MOV AL,MUL2 DEC AL MUL AL,9 ADD AL,DL
30
ADD BX,AX MOV AL,[BX] MOV PROD,AL
27. 试编写一程序,把DA_BY1字节存储单元的8位二进制数分解为3个八进制数,其中字高位八进制数存放在DA_BY2的字节单元中,最低位存放在DA_BY2+2单元中.例如数据单元定义如下:
DA_BY1 DB 6BH
DA_BY2 DB 3 DUP(0) 解:
LEA DI , DA_BY+2
MOV AL , DA_BY1
XOR AH , AH MOV DL , 3 MOV CL , 3 SHL AX , 3 LOP: SHR AL , CL PUSH AX
AND AL , 7 MOV [DI] , AL DEC DI DEC DL POP AX JNZ LOP
29.试编制一程序,统计DA_WORD数据区中正数, 0 , 负数的个数.数据区为: DATA SEGMENT
DA_WORD DW - 1,3,5,0, - 5, -7, - 4,0, -7, …… COUT1 DB $ - DA_WORD
COUT2 DB 0 ; 存放正数的个数
DB 0 ; 存放0的个数 DB 0 ; 存放负数的个数 解:
MOV BX , OFFSET DA_WORD ;BX指向数据区 MOV CX , COUT1 ;设置循环次数
LOP: MOV AX , [BX] ;取数 CMP AX , 0 ;比较
JE ZERO 小于0,转ZERO JL LESS ;负数,转LESS
31
INC COUT2 ;统计正数个数 ZERO: INC COUT2+1 ;统计0的个数 JMP NEXT
LESS: INC COUT2+2 ;统计负数个数
NEXT: INC BX ;BX指向下一个数据 LOOP LOP ;循环
30. 试编制一程序,完成在数据区内可任选下列两种数据之一,并显示排列结果.产生哪种数据排列,由键盘输入1或2来确定. 第一种排列:?0?,?A?,?1?,?B?,?2?,?C?, … ?9?,?J? 第二种排列:?A?,?0?,?B?,?1?,?C?,?2?, … ?J?,?9? 解:
DATA SEGMENT
DA1 DB ?0123456789? DA2 DB ?ABCDEFGHIJ? DATA ENDS ……
LEA SI , DA1 LEA DI , DA2 MOV CX , 10 MOV AH , 01H INT 21H CMP AL , 1 JE NEXT1 CMP AL , 2 JE NEXT2 JMP EXIT
NEXT1: MOV DL , [SI] MOV AH , 02H INT 21H
MOV DL , [DI] MOV AH , 02H INT 21H INC SI INC DI LOOP NEXT1 JMP EXIT NEXT1: MOV DL , [DI] MOV AH , 02H INT 21H
MOV DL , [SI] MOV AH , 02H INT 21H INC SI
32