习 题
解: 程序功能是,统计CONDAT数据区的9个字节,将正数之和送入1000H单元;将前几个为0的数的个数送入1001H单元。
程序执行结果:(AX)=0010H (BX)=1000H (CX)=0 (DX)=023EH。
6.9设内存自1000H开始的存储区中,存放有20个带符号数,试编一程序段,找出其中最小的数,存于数据区2000H中。
解:
SCAN:
NEXT:
6.10 在内存的BUFF缓冲区中,存放有一个数据块,数据块的长度存放在BUFF和BUFF+1单元中,从BUFF+2开始存放的是以ASCII码表示的十进制数。编写程序段,将这些ASCII码转换成组合式BCD码(即把两个相邻字节单元的数码并成一个字节单元),高地址的放在高4位。转换后的压缩BCD码存放到BUFF+2开始的单元中。
解:
CONTI:
CODE SEGMENT ASSUME CS:CODE CONVER PROC FAR PUSHF PUSH AX PUSH BX PUSH CX PUSF DX PUSH SI PUSU DI
LEA SI,ASCDES MOV DI,10 MOV CX,5 MOV AX,0 MUL DI
MOV BL,[SI] MOV BH,0 SUB BL,30H ADD AX,BX INC SI LOOP CONTI
MOV BYDAT,AX POP DI
MOV AX,1000H MOV DS,AX LEA BX,BUFF MOV CX,[BX] MOV AX,0 ADD BX,2 MOV DX,[BX] CMP DX,AX JGE NEXT XCHG AX,DX LOOP SCAN
MOV [BX],2000H MOV [BX],AX HLT
正数之和等于3EH保存于1000H单元中;数组前面0的个数是2,保存于1001H单元中。
文件名:微机原理与接口技术习题 第 17 页 共 54 页
错误!未指定书签。与接口技术
POP SI POP DX POP CX POP BX POP AX POPF RET
CONVER ENDP CODE ENDS END
6.11 设有一由无符号数组成的数组,数组名为ORDER,数组长度为60。编写程序,求该数组中的最大值。
解:
; ;
START: ;
STOP:
DATA SEGMENT
ORDER DW 60 DUP(?) MAX DW ? DATA ENDS STACKS SEGMENT DW 256 DUP(0) TOP LABEL WORD STACKS ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKS MOV AX,DATA MOV DS,AX
MOV AX,STACKS MOV SS,AX
MOV SP,OFFSET TOP LEA SI,ORDER MOV CX,60
CALL FAR PTR SUBPRG MOV MAX,AX MOV AH,4CH INT 21H CODE ENDS CODE1 SEGMENT ASSUME CS:CODE1 SUBPRG PROC FAR PUSHF
CMP CX,2 JZ STOP DEC CX ADD SI,2 CALL SUBPRG MOV AX,[SI] CMP AX,2[SI] JNC NEXT
XCHG AX,2[SI] MOV [SI],AX
文件名:微机原理与接口技术习题 第 18 页 共 54 页
NEXT:
习 题
MOV AX,[SI] SUB SI,2 POPF RET
SUBPRG ENDP CODE1 ENDS END START
6.12 编写子程序,将从键盘输入的小写字母用大写字母在屏幕显示出来,如不是字母则结束。
解:
NEXT:
6.13 编写子程序,要求从键盘输入一个4位的十六进制数,然后将其转换成二进制数并在屏幕上显示出来。
解:
START:
AGAIN:
DATPRO SEGMENT BUFF DB 5 DB ?
DB 5 DUP(?) DATPRO ENDS PROSEG SEGMENT
ASSUME CS:PROSEG,DS:DATPRO MOV AX,DATPRO MOV DS,AX LEA DX,BUFF MOV AH,0AH INT 21H
MOV BL,[BUFF+1] LEA SI,BUFF+2 MOV AL,[SI] CMP AL,30H JB EXIT CMP AL,39H
第 19 页 共 54 页
CODE SEGMENT ASSUME CS:CODE KEYIN PROC FAR PUSH AX PUSH DX MOV AH,1 INT 21H
CMP AL,61H JB EXIT CMP AL,7AH JA EXIT SUB AL,20H MOV DL,AL MOV AH,02H INT 21H JMP NEXT POP DX POP AX RET
KEYIN ENDP CODE ENDS END KEYIN
文件名:微机原理与接口技术习题
错误!未指定书签。与接口技术
DECI:
LOOP1:
ONE: DISPL:
EXIT:
6.14 编写一个子程序,实现8位无符号数的除法运算,被除数、除数、商和余数存放在自DATA开始的存储单元中。
解:
CODESUB SEGMENT
ASSUME CS:CODESUB SUBPRO PROC FAR PUSH AX PUSH BX PUSH DX
MOV AL,DATA CBW
DIV DATA+1 PUSH AX CBW
CALL DISPL POP AX
MOV AL,AH CBW
CALL DISPL POP DX POP BX POP AX RET
JBE DECI CMP AL,61H JB EXIT CMP AL,66H JA EXIT SUB AL,27H SUB AL,30H MOV CL,4 SHL AL,CL MOV CX,4 SHL AL,1 JC ONE
MOV DL,30H JMP DISPL MOV DL,31H PUSH AX MOV AH,2 INT 21H POP AX LOOP LOOP1 INC BL INC SI CMP BL,0 JNZ AGAIN MOV AH,4CH INT 21H PROSEG ENDS END START
文件名:微机原理与接口技术习题 第 20 页 共 54 页
相关推荐: