BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'
BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H
PROMPT2 CR LF
EQU EQU
SPACE EQU .CODE
START: MOV AX,@DATA
MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER DISP PROMPT2 JMP EXIT
OVER: DISP MESSAGE EXIT: MOV AH,4CH
INT 21H END START
第196页例5.27
编写一个程序,判别键盘上输入的字符:若是0~9字符,则显示;若为A~Z或a~z字符,均显示“C”;若是回车字符
分析:根据自负的ASCII码,需要处理多种情形:00H~29H(等待)30H~39H(显示数字)3A~40H(等待)41H~5AH(显示C)5BH~60H(等待)61H~7AH(显示C)7BH~7FH(等待),所以徐永多分支结构程序解决。 DISP MACRO STR
MOV DX, OFFSET STR MOV AH, 9 INT 21H ENDM
.MODEL SMALL .STACK 64 .DATA PROMPT1
BYTE 'There is a message for you from NEO.'
BYTE SPACE
BYTE 'To read it enter Y','$'
BYTE CR,LF
MESSAGE
BYTE 'HI! I will meet you in the Matrix in 3009.' BYTE '$'
BYTE CR,LF,'No more messages for you.','$' 0DH 0AH 20H
PROMPT2 CR LF
EQU EQU
SPACE EQU .CODE
START: MOV AX,@DATA
MOV DS,AX DISP PROMPT1 MOV AH, 7 INT 21H CMP AL, 'Y' JZ OVER
DISP PROMPT2 JMP EXIT
OVER: DISP MESSAGE EXIT: MOV AH,4CH
INT 21H END START
第201页例5.30
编写程序实现振铃连续发声,直到敲击键盘任意键才停止。
分析:振铃发声可采用02号DOS功能调用显示07H字符(振铃)实现,要检测键盘是否发生按键操作,同时又能连续发生,可调用BIOS的INT16H中断,器调用参数与功能如下: MOV AH,01 INT 16H
返回参数:股国有按键操作ZF=0,否则ZF=1。 .MODEL SMALL .STACK .DATA BEL
EQU 7
BYTE 'TO STOP THE BELL'
MESSAGE .CODE
BYTE ' SOUND PRESS ANY KEY$'
START: MOV AX, @DATA
MOV DS, AX MOV AH, 9
LEA DX, MESSAGE INT 21H
AGAIN: MOV AH, 2
MOV DL, BEL INT 21H MOV AH, 1 INT 16H JZ AGAIN MOV AH, 4CH INT 21H END START
第202页例5.32
在字节数组中找出第一个0数据,找到显示“Y”,否则显示“N”。
分析:为找出第一个0数据,应把0与每一个数据比较,所以程序应采用循环结构。循环结束条件有二:遇到一个0元素,或者扫描了整个数组也没找到,所以使用LOOPNA指令。 .MODEL SMALL .DATA BUF CNT
BYTE 12, 23, 46, 0FEH BYTE 0F1H, 3DH, 0, 23 BYTE 56,73,0FCH, 0, 3 EQU $-BUF
.CODE
START: MOV AX, @DATA
MOV DS, AX MOV CX, CNT MOV DI, -1 NEXT: INC DI CMP BUF[DI], 0
LOOPNZ NEXT
JNZ NFIND
MOV DL, 'Y' MOV AH, 2 INT 21H JMP EXIT
NFIND: MOV DL, 'N'
MOV AH, 2 INT 21H
EXIT: MOV AH, 4CH
INT 21H END START
第209页5.37
在一片内存区中有一数据块,起始地址为BLOCK。要求把其中的负数和非负数分开,分别存放到MINUS_BUF和PLUS_BUF缓冲区中。
分析:取字符串、存字符串可以用相应的串操作指令实现,区分负数和非负数可通过测试符号位解决。难点在于,如果使用串操作指令就一定要用DI作为目的串的指针,但现有两个目的串,那么一个指针如何为两个目的串服务?其中一个解决办法是让DI做当前要访问的目的串的指针,BX作另一个当前不访问的目的串指针;如果访问对象改变,就交换两个指针的内容。 DATA SEGMENT
BLOCK DB 03H,46H,0F4H,0AFH,90H,87H,50H DB 99H,0FFH,40H,77H,88H,0B3H,9EH CNT EQU $-BLOCK
ORG 100H
PLUS_BUF DB CNT DUP(0FFH)
ORG 200H
MINUS_BUF DB CNT DUP(01H) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX MOV ES,AX LEA SI, BLOCK LEA DI, PLUS_BUF
LEA BX, MINUS_BUF
MOV CX, CNT CLD
NEXT: LODSB
TEST AL,80H JNZ MINUS STOSB JMP AGAIN
MINUS: XCHG BX,DI
STOSB XCHG BX,DI
AGAIN: LOOP NEXT
MOV AH,4CH INT 21H
CODE ENDS
END START
第220页例5.42
讲16位二进制数转换为十六进制数送屏幕显示。
分析:可使用02H号DOS功能调用(显示字符)来显示十六进制数。而将4位二进制数转换为对应的一位十六进制数的ASCII码的方法一再例5.26中陈述:4位二进制数等于0000~1001时,该数加上30H;四位二进制数等于1010~1111时,该数则要加上37H。程序功能用子程序实现,其中的显示功能通过调用另一子程序实现。 .MOEL SMALL
.STACK 64 .CODE
START: MOV DX,0F120H CALL B2HEX MOV AH,4CH INT 21H
;子程序名:B2HEX
;入口参数:待转换二进制数送入DX ;出口参数:显示4位十六进制数字 B2HEX PROC NEAR PUSH AX PUSH CX MOV CH,4 MOV CL,4 LOP:ROL DX,CL MOV AL,DL AND AL,0FH CMP AL,0AH JB NEXT ADD AL,7 NEXT:ADD AL,30H CALL DISP DEC CH JNZ LOP POP CX POP AX RET B2HEX ENDP ;子程序名:DISP
;入口参数:输出字符的ASCII码送AL ;出口参数:在屏幕显示单个字符 DISP PROC NEAR PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RET DISP ENDP END START
第229~232页的第6、9、14、20题。
6. 阅读下列程序,并回答问题(假设DS=00BFH): .MODEL SMALL .DATA ORG 1000H NUM BYTE 48H,8DH RES BYTE ? .STACK 100 .CODE
START: MOV AX, @DATA MOV DS,AX
MOV SP, 64H LEA BX, NUM MOV AL, [BX] SUB AL, [BX+1] PUSH AX PUSHF ADD AL,AL POPF POP AX MOV [BX+2],AL MOV AH,4CH INT 21H END START 问题:
(1) 分析程序运行后,存储器中数据段中数据存放情况,填入具体数据; (2) 分析最后标志位OF、SF、ZF、AF、PF和CF的状态(其它各位假定为0); (3) 分析堆栈进栈情况,进栈后,SP是多少? 堆栈中填入具体数据。 OF、SF、CF、AF、PF均为1,ZF=0;SP=62H
9. 阅读程序: .MODEL SMALL .DATA
AA DB 0A7H, 89H, 23H, 8EH BB DB 0B0H, 87H, 94H, 62H CC DB 5 DUP(?) COUNT EQU 0004H .CODE
START: MOV AX, @DATA MOV DS, AX MOV ES, AX CLD LEA DI, AA LEA SI, BB AND AX, AX
MOV BX, OFFSET CC+4 MOV CX, COUNT MUL1: MOV AL, [DI+3] ADC AL, [SI+3] MOV [BX], AL DEC DI DEC SI DEC BX DEC CX JNZ MUL1 MOV AL, 0 RCL AL, 1 MOV [BX], AL
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库2011汇编复习 大题部分(3)在线全文阅读。
相关推荐: