1.已知变量X的值为2767,请编程序统计变量X中的二进制值中1和0的个数,并记入ONE和ZERO变量中。
DATAS SEGMENT
X DW 2767H
ONE DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX, X
MOV BX,0H
MOV CX,16
again:
shl ax,1
ADC BX,0
loop again
mov ONE,BX
MOV AH,4CH
INT 21H
CODES ENDS
END START 2.从键盘上输入一系列以$为结束符的字符串,然后对其中的字母字符计数,并显示出计数结果。 DATAS SEGMENT X DW 2767H ONE DW ? ZERO DW ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AX, X MOV BX,0H MOV CX,16 again: shl ax,1 JC ISONE INC ZERO JMP exit ISONE: ADC BX,0 exit: loop again mov ONE,BX MOV AH,4CH INT 21H CODES ENDS END START 3.试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示“MATCH”,若不相同则显示“NO MATCH”。 DATAS SEGMENT str1 db 'dfsaff' len_string1 equ $-str1 str2 db 'dfsadf' len_string2 equ $-str2 str3 db 'match$' str4 db 'not match$' DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:DATAS START: MOV AX,DATAS MOV DS,AX MOV ES,AX xor bx,bx mov cx,len_string1 cmp cx,len_string2 JNZ LAB2 MOV DI,OFFSET STR1 MOV SI,OFFSET STR2 repz CMPSB JZ LAB1 JNZ LAB2 LAB1: mov dx,offset str3 mov ah,09h int 21h mov ah,4ch int 21h LAB2: mov dx,offset str4 mov ah,09h int 21h MOV AH,4CH INT 21H CODES ENDS END START 4.编写一段子程序BINIHEX,完成十六进制数输出的功能。要输出的数在AX寄存器中。 DATAS SEGMENT show DW 12AcH DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AX,show MOV CX,4 Ag1: push CX MOV CL,4 ROL AX,CL MOV DX,AX AND DL,0FH ADD DL,30H CMP DL,39H JNA show1 ADD DL,7H CMP DL,46H JNA show1 ADD DL,20H show1: push ax mov ah,02h INT 21H pop ax pop CX loop Ag1 MOV AH,4CH INT 21H CODES ENDS END START
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。