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
汇编复习题 test2
最新推荐文章于 2020-04-11 21:48:37 发布