INT 21H 解
①CX=2180H,CF=1B ②[SI]=80H,[SI+1]=21H ③[SI]=01H,MEM=32700H ④[SI]=00H,ZFCFPF=111B ⑤AX=000FH,CFAF=00B ⑥AX=0105H,CFAF=11B ⑦AL=5EH,CFAF=00B ⑧AL=64H ⑨BX=0008H ⑩AX=0018H ⑾AX=FF18H
⑿AX=FFE3H,DX=0000H 第4章 习题及参考解答
1.试编一程序,把地址偏移量为100H单元开始的256个单元分别写入00H,01H,02H,03H,…,FFH数据。 解 源程序如下 DATA
SEGMENT ORG 100H DB 256 DUP(?) EQU $-BUF1
BUF1 COUNT
DATA STK
ENDS
SEGMENT STACK DB 100 DUP(?) ENDS
STK
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF1 ;戓 LEA SI,BUF1 MOV CX,COUNT XOR AL,AL
NEXT:
MOV [SI],AL
;或 MOV AL,00H
INC AL INC SI LOOP NEXT MOV AH,4CH INT 21 H
CODE
2.统计上题写入的数据块中0元素、正元素、负元素的个数,并分别把统计结果送入上述数据块之后的三个单元中。
ENDS END START
解 DATA
SEGMENT ORG 100H
;共256个数据
BUF1 DB 00H,01H.02H,…,0FEH,0FFH COUNT EOU$-BUF1
DB 3 DUP(?)
DATA ENDS STK SEGMENT STACK DB 100 DUP(?) STK
ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV S1,OFFSET BUF1 MOC CX,COUNT XOR BX,BX
XOR DH,DH
NEXT2: MOV AL,[SI]
CMP AL,0 JZ ZER0 JS NEGAT
BL与BH分别存放正、负元素的个数 DH寄存器存放0元素个数
若ZF=1,则为0,转至ZERO,DH+1 SF=0则为负数,BH+1
;;
;;若INC BL
JMP NEXT3
;既不是0又不是负,则为正数,BL+1
ZERO: INC DH
JMP NEXT3
;0的个数加1
NEGAT:INC BH NEXT3: INC SI
;负数个数加1 ;修改地址指针SI ;未完,继续循环
;存入0元素个数统计结果
LOOP NEXT2 MOV [SI],DH INC SI
MOV [SI],BX MOV AH,4CH INT 21H
;存入正、负数个数统计结果
CODE ENDS
4.把地址偏移量为STRG1单元开始的128个单元的内容传送到地址偏移量为STRG2开始的单元中。 解
DATA SEGMENT
STRGl DB XXH,XXH,XXH,….XXH ;1 28个数据 COUNT EOU$-STRGl STRG2 DB 128 DUP(?)
END START