汇编第五章课后题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.从屏幕上输入小写字母,转化为大写字母输出
(解法1)
DATA SEGMENT
MESSAGE DB "ENTER A STRING:",0AH,0DH,'$' MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MESSAGE ;输出ENTER A STRING
MOV AH,09H
INT 21H
LEA DX,MAXLENGTH ;输入字符串
MOV AH,0AH ;键盘输入到缓冲区,DS:DX=缓冲区首址
INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数
MOV AH,02H ;输出回车换行
MOV DL,0AH
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL
MOV CH,0
MOV BH,02H
LEA SI,MAXLENGTH+2;取字符串的基地址放入SI
XUN:
MOV AL,[SI]
CMP AL,'Z'
JBE S1 ;小于等于'Z'转移
JMP S3
S1:CMP AL,'A'
JAE DA ;大于等于'A'转移
JMP OUTPUT
DA:ADD AL,20H
JMP OUTPUT
S3:CMP AL,'z' ;小于等于小Z转移
JBE S4
S4:CMP AL,'a' ;大于等于小a转移
JAE XIAO
JMP OUTPUT
XIAO:
SUB AL,32
JMP OUTPUT
OUTPUT:
MOV DL,AL
MOV AH,02H ;显示输出
INT 21H
INC SI
LOOP XUN
MOV AH,4CH
INT 21H
CODE ENDS
END START
(解法2)
;将输入的小写字母转化为大写字母输出,输入回车结束CODE SEGMENT
ASSUME CS:CODE
BEGIN:
MOV AH,01H
INT 21H
CMP AL,0DH ;ASCII OF CARRIAGE RETURN
JE EXIT
CMP AL,61H ;ASCII OF 'a'
JB STOP
CMP AL,7AH ;ASCII OF 'z'
JA STOP
SUB AL,20H
STOP:
MOV DL,AL
MOV AH,2
INT 21H
JMP BEGIN
EXIT:
MOV AH,4CH
INT 21H
RET
CODE ENDS
END BEGIN
2.输入一个字符,找出它的前导字符和后续字符,并按顺序显示这三个字符.
(解法1)
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV AH,01H
INT 21H
CMP AL,61H
JB EXIT
CMP AL,7AH
JA EXIT
MOV CL,AL
DEC AL
MOV DL,AL
MOV AH,02H
INT 21H
MOV DL,CL
MOV AH,02H
INT 21H
AND AL,01H
INC CL
MOV DL,CL
MOV AH,02H
INT 21H
EXIT:
MOV AX,4C00H
INT 21H
RET
MAIN ENDP
CODE ENDS
END START
(解法2)
.MODEL SMALL
.STACK 200H
.DATA
imsg db 'Input:$' ;输入提示信息
omsg db 0Dh,0Ah,'Output:$' ;输出提示信息string db 3 dup(0),'$' ;存放三个字符
.CODE
START:
mov ax,@data
mov ds,ax
lea dx,imsg
mov ah,9
int 21h
mov ah,1
int 21h
lea di,string
dec al
mov cx,3
s:
mov [di],al
inc di
inc al
loop s
lea dx,omsg
mov ah,9
int 21h
lea dx,string
mov ah,9
int 21h
MOV AH,07H
INT 21H
MOV AX,4C00H
INT 21H
END START
3.将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL,BL,CL,DL中
.MODEL SMALL,C
.CODE
.STARTUP
MOV AX,3456H
MOV BX,AX
MOV CL,4