汇编第五章作业

5.1小写变大写

DATA SEGMENT
MEG  DB 'Please enter a lowercase letter:$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MEG
INT 21H
XOR AH,AH
MOV AH,1;输出放al
INT 21H
SUB AL,20H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

 5.2:编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符

DATA SEGMENT
MES DB 'Please enter a lowercase letter:$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

MOV DX,OFFSET MES
MOV AH,9
INT 21H

MOV AH,1
INT 21H

MOV BL,AL
SUB BL,1

MOV DL,BL
MOV AH,2
INT 21H

ADD AL,1
MOV DL,AL
MOV AH,2
INT 21H

XOR BL,BL
MOV BL,AL
ADD BL,1

MOV DL,BL
MOV AH,2
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

 5.3将AX寄存器中的16位数据分成4组(从高到低),每组4位,然后把这4组数作为数当中的低4位分别放在AL,BL,CL,DL中。

DATA SEGMENT

DATA ENDS
CODE SEGMENGT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,AX
MOV DX,AX

MOV CL,4
SHR AH,CL;SHR AL,4不能这么写1以上要用CL
MOV AL,AH

AND BH,15;让BH和00001111相与
MOV BL,BH

MOV CL,4
MOV DH,DL;不改变DL的值
SHR DH,CL;SHR AL,4不能这么写1以上要用CL
MOV CL,DH

AND DL,15;让DL和00001111相与


MOV AH,4CH
INT 21H
CODE ENDS
EDN START

5.4:输入两个字符串,其中两个字符串的字符数相等。然后比较两个字符串所包含的字符,如果完全相等,则输出‘Match’,否则,输出‘No match’。

DATA SEGMENT
MES1 DB 'STRING1:',0AH,0DH,'$'
MES2 DB 'STRING2:',0AH,0DH,'$'
STRING1 DB 512 dup('$')
LEN  EQU $-STRING1
STRING2 DB 512 dup('$')
MES3 DB 'MATCH$'
MES4 DB 'NO MATCH$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,LEN
MOV DX,OFFSET MES1
MOV AH,9
INT 21H

MOV DX,OFFSET STRING1
MOV AH,10
INT 21H
mov ah,02h            ;回车换行
        mov dl,0dh
        int 21h
        mov dl,0ah
        int 21h

MOV DX,OFFSET MES2
MOV AH,9
INT 21H

MOV DX,OFFSET STRING2
MOV AH,10
INT 21H
mov ah,02h            ;回车换行
        mov dl,0dh
        int 21h
        mov dl,0ah
        int 21h
mov di,offset STRING1
mov si,offset STRING2
repz cmpsb    
JZ A2
JNZ A3
A3:
MOV DX,OFFSET MES4
MOV AH,9
INT 21H
JMP A4
A2:
MOV DX,OFFSET MES3
MOV AH,9
INT 21H
A4:
MOV AH,4CH
INT 21H
CODE ENDS
END START

 5.9:试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二 进制数。

DATA SEGMENT
MES DB 'Please enter a four-digit hexadecimal number:',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES
MOV AH,9
INT 21H
MOV CX,4;循环四次,进行输入
A1:
MOV AH,01
INT 21H
CMP AL,39H
JBE A2
SUB AL,7H
A2:
SUB AL,30H
PUSH CX;压栈保存CX
MOV CL,4
SHL BX,CL
ADD BL,AL
POP CX
LOOP A1

MOV CX,16
A3:
SHL BX,1
JC A4;CF==1
JNC A5
A4:
MOV DL,31H
MOV AH,02
INT 21H
LOOP A3
A5:
MOV DL,30H
MOV AH,02
INT 21H
LOOP A3

MOV AH,4CH
INT 21H
CODE ENDS
END START

原文地址:https://www.cnblogs.com/kubopiy/p/14251427.html