DX和AX联合存放一个32位整数(DX存放高16位),将该数据逻辑左移一位. 10用移位、传送和加法指令,完成AX与10的乘法运算. 11写指令序列,测试DL寄存器的低4位是否为0.
12列程序执行完后,物理地址单元01070H的内容是什么? MOV AX,00E0H MOV DS,AX MOV BX,0200H MOV CX,BX NEXT: MOV [BX],BL INC BL LOOP NEXT MOV AH,4CH INT 21H 13列程序段完成什么功能? DATX1 DB 300 DUP(?) DATX2 DB 100 DUP(?) . . .
MOV CX,100 MOV BX,200 MOV SI,0 MOV DI,0
NEXT MOV AL,DATX1[BX][SI] MOV DATX2[DI],AL INC SI INC DI LOOP NEXT
14列程序段执行后,CX、AL、ZF、SI、DI的结果如何? ⑴ARG DB 30,20,10,...
MOV CX,10 MOV AL,10
MOV DI,OFFSET ARG REPNE SCASB :
CX=____ AL=____ ZF=______ DI=_____ ⑵ARG1 DB 05H,08H,31H... ARG2 DB 05H,08H,31H... :
MOV CX,1
MOV SI,OFFSET ARG1 MOV DI,OFFSET ARG2 REPZ CMPSB
:
CX=____ ZF=____ SI=____ DI=_____ ⑶ARG DB 10,20,30 :
MOV CX, 3
MOV SI,OFFSET ARG REP LODSB
CX=____ AL=____ SI=_____
15知当前的DOS和ES指向同一个段,且当前数据段从0000H到00FFH单元分别为
01,02,03......,0FEH,0FFH,00H,问下列程序执行后,0000H~00FFH单元的内容有什么变化?
MOV SI,0000H MOV CX,0080H CLD
REP MOVSW MOV AH,4CH
INT 21H
16下面是实现截取字符串右侧N个字符的子程序,字符串以$结束,?已知程序有错,请改正. 入口条件:SI为字符串首址指针,N值在CL中,字符串以$结束; 出口条件:SI为截取后字符串指针,新字符串以$结束; 受影响的寄存器:无
⑴:TRX PROC NEAR ⑵: PUSH BX ⑶: PUSH SI ⑷: PUSH AX ⑸: PUSH CX ⑹: MOV BX,SI ⑺: MOV CH,CL ⑻:TRX1: MOV AL,[SI] ⑼: CMP AL,’$’ ⑽: JNZ MOVE ⑾: INC SI ⑿: JMP TRX1 ⒀:MOVE: CMP CH,CL ⒁: JC TRXR ⒂: SUB CH,CL ⒃: MOV SI,BX ⒄: ADD BL,CH ⒅:TRX2: MOV AL,[BX] ⒆: MOV [SI],AL ⒇: INC BX (21): INC SI (22): JZ TRX2
(23): POP CX (24): POP AX (25): POP SI (26): POP BX (27): RET
(28):TRXR:ENDP 17什么叫中断?
18中断向量表的作用是什么?
19进行中断程序设计时,为使CPU能响应某中断请求,执行相应中断服务程序,主程序应做哪
些工作? 四 程序分析题
1.在内存单元NUMW存放着一个0~65535范围内的整数,将该数除以500,然后将商和余数分别存入QUO和REM单元.将程序补充完整. DSEG SEGMENT
NUMWDW 8000 QUO DS 0 REM DS 0 DSEG ENDS CSEG SEGMENT
ASSUME CS:CSEG,DS,DSEG MOV AX,DSEG MOV DS,AX MOV AX,NUMW MOV ( ),500 XOR DX,DX DIV BX MOV QUO,AX MOV REM,( ) HLT CSEG ENDS END
3.下述程序执行后.应将DATA数组中的最大值存入MAX单元.?数组元素为无符号数,数据个
数存放在CNT单元中,现已知程序有错,请改正. 1):SSEG SEGMENT STACK 2):SKTOP DB 20DUP(0) 3):SSEG ENDS 4):DSEG SEGMENT
5):DATA DW 2,34H,56,78H,7EH,5A,63H 6):CNT DB 07 7):MAX DB 0,0
8): ASSUME DS:DSEG,DS:DSEG,SS:SSEG 9):FMAX MOV AX,[SI] 10): CMP AX,[SI+1] 11): JG FMAX1
12): MOV AX,[SI+1] 13):FMAX1: DEC CX 14): INC SI 15): JNZ FMAX 16): RET 17):MAIN: PUSH CS 18): POP DX
19): MOV AX,SSEG 20): MOV SS,AX 21): MOV SP,SKTOP 22): MOV CL,CNT 23): CALL FMAX 24): MOV MAX,AX 25): HLT 26):DSEG ENDS
27): END MAIN
4.编制将带符号字节数据按绝对值递增顺序排序的子程序.
5.编制程序截取一字符串中由左侧第M个字符开始的N个字符的程序.
6.下面的程序是利用BIOS的接收键盘输入字符和显示字符的功能将键盘接收的一个0~255
的数据,以二进制形式显示出来的程序,程序有错请改正,?使之完成预定的功能. 1):SSEG SEGMENT STACK
2):STKTOP DB 100H DUP(0) 3):SSEG ENDS 4):CSEG SEGMEN
5): ASSUME CS:CSEG,DS:DSEG 6):DISP PROC FAR 7): PUSH DS 8): XOR BX,BX 9): PUSH BX 10):INPUT: MOV AH,0 11): INT 16 12): CMP AL,0DH 13): JZ DISP1 14): SUB AL,’0’ 15): ADD BL,BL 16): MOV BH,BL 17): ADD BL,BL 18): ADD BL,BL 19): ADD BL,BH 20): ADD AL,BL 21): JMP INPUT 22): MOV AH,8 23):DISP1: XOR AL,AL 24): SHL BL,1
25): ROR AL,1 26): ADD AL,30H 27): MOV AH,14H 28): INT 10H 29): DEC AH 30): JNZ DISP1 31): RET 32):DISP ENDP 33):CSEG DNDS
34): END DISP
7.阅读下列程序,回答下列问题:
①该程序运行后,S6、S7、S8、S9、S10单元的值依次是____、____、____、
②程序中指令SAL BL,1可以用指令_____________代替. DATA SEGMENT
RECRD DB 76,69,84,90,73,88,99,63,100,80 S6 DS 0 S7 DW 0 S8 DW 0 S9 DW 0 S10 DW 0 DATA ENDS CODE SEGMENT
START PROC FAR
ASSUME CS:CODE,DS:DATA PUSH DS MOV AX,0 PUSH AX
MOV AX,DATA MOV DS,AX MOV CX,10 MOV SI,0
NEXT: MOV AL,RECRD[SI] MOV AH,0 MOV BL,10 DIV BL MOV BL,AL XUB BL,6 SAL BL,1 MOV BH,0 INC S6[BX] INC SI LOOP NEXT RET
、____
?___ START ENDP CODE ENDS
END START 8.阅读下列程序,回答下列问题: ①该程序完成什么功能?
②程序中的INC SI可否用指令ADD SI,1代替,为什么? ③程序中的指令LEA SI,DATA1可用指令_________代替; ④CLC的目的是__________. DSEG SEGMENT
DATA1 DB 85H,27H,4AH DATA2 DB 93H,87H,65H LEGH DW 3 SUM DB 0,0,0 DSEG ENDS CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG STR: MOV AX,DSEG MOV DX,AX LEA SI,DATA1 LEA BX,DATA2 LEA DI,SUM MOV CX,LEGH CLC
AGAIN: MOV AL,[SI] ADC AL,[BX] MOV [DI],AL INC SI INC BX INC DI LOOP AGAIN MOV AH,4CH INT 21H CSEG ENDS
END STR