- 13
- 0
- 约1.61千字
- 约 6页
- 2018-05-28 发布于河南
- 举报
微机原理复习-例题讲解
例4-23:统计数据中负元素的个数 DATA SEGMENT D1 DB -1,-3,5,6,-9,……. COUNT EQU $-D1 RS DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR BEGIN:MOV AX,DATA MOV DS,AX MOV BX,OFFSET D1 MOV CX,COUNT MOV DX,0 LOP1: MOV AL,[BX] CMP AL,0 ;符号数比较 例4-24:寄存器AX中有一个16位二进制数,编程统计其中“1”的个数,结果存放在CX中。 代码段主要部分如下: MOV CX,0 LOP: AND AX,AX ;AX内容不变,但影响标志位 JZ STP ;AX是全0,则转STP SAL AX,1 JNC LOP INC CX JMP LOP STP: HLT 例4-29:将ASCII码表示的两位十进制数转换成一字节的二进制数。(十进制数的ASCII码:30H~39H,以‘79’为例,转换成79=4FH存放起来。) DATA SEGMENT ASDEC DB ‘7’,‘9’ BIN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET ASDEC MOV AL,[SI] ;取出十位数‘7’ SUB AL,30H ;把‘7’转成07 SAL AL,1 ;这5条语句把07换成70 MOV BL,AL ;BL=AL=07×2 MOV CL,2 ;左移2次等于乘4 SAL AL,CL ;AL=AL×4=07×8 ADD BL,AL ;BL= 07×2+07×8=70 INC SI MOV AL,[SI] ;取出个位数‘9’ SUB AL,30H ;把‘9’转成数字09 ADD AL,BL ;09+70=79 MOV BIN,AL ;保存结果 MOV AH,4CH INT 21H CODE ENDS END START * JGE JUS INC DX JUS: INC BX DEC CX JNZ LOP1 MOV RS,DX RET START ENDP CODE ENDS END BEGIN 例4-31:将一字节二进制数转换成两位ASCII码表示的十进制数。以79=4FH为例,转换成‘79’=37H、39H存放起来。 DATA SEGMENT BIN DB ASDEC DB 2 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DI,OFFSET ASDEC XOR AX,AX ;将AX清零 MOV AL,BIN ;取出一字节二进制数
原创力文档

文档评论(0)