1.编一个程序,从键盘输入一个不长于120个字符的串(回车键结束),然后将其中的字母字符显示输出(在显示输出前,补充输出回车换行)。
DATAS SEGMENT
string db 120,?,121 dup('$')
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AH,0AH
lea dx,string
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
lea SI,string
MOV CH,0
MOV CL,[SI+1]
ADD SI,2
ag:
MOV DL,[SI]
cmp dl,41H
JB exit
cmp dl,5AH
jbe output
cmp dl,61H
JB exit
cmp dl,7AH
ja exit
output:
mov ah,02h
INT 21H
exit:
inc SI
loop ag
MOV AH,4CH
INT 21H
CODES ENDS
END START
2. 编一个程序完成从键盘上输入一个4位的16进制数,并以八进制形式显示出来。
3. 在首地址为DATA的字数组中,存放了100H个16位补码数,编一个子程序,找出其中的最小数,并存入AX寄存器中。
4.已知数据块BUF中存放3个字数据,是编写一个程序判断这3个数的关系:如果3个数相等,则显示“All equal.”;如果有任意两个数相等,则显示“Only two equal.”;如果三个数各不相同,则显示“All three different from each other.”。
DATAS SEGMENT
BUF DW 5h,5h,5h
STRING1 db 'All equal.',0dh,0ah,24h
STRING2 db 'Only two equal.',0dh,0ah,24h
STRING3 db 'All three different from each other.',0dh,0ah,24h
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA SI,BUF
MOV AX,[SI]
MOV BX,[SI+2]
MOV DX,[SI+4]
CMP AX,BX
JE cmp1
CMP AX,DX
JE cmp11
CMP BX,DX
MOV AH,09H
LEA DX,STRING3
INT 21h
jmp exit
cmp11:
MOV AH,09H
LEA DX,STRING2
INT 21h
exit2:
jmp exit
cmp1:
CMP AX,DX
JZ cmp21
MOV AH,09H
LEA DX,STRING2
INT 21h
jmp exit
cmp21:
MOV AH,09H
LEA DX,STRING1
INT 21h
exit:
MOV AH,4CH
INT 21H
CODES ENDS
END START
5.Link指向一个字线性表,其中的首单元保存线性表的长度,编一个程序,将该线性表中的奇数项删除。
DATAS SEGMENT
LINK DW 10,1h,2h,3h,4h,5h,6h,7h,8h,9h,10h
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
LEA DI,LINK
MOV CX,[DI]
ADD DX,2
ag:
push cx
dec cx
mov si,dx
yidong:
mov AX,[si+2]
mov [si],AX
add si,2
loop yidong
add dx,2
pop cx
inc cx
loop ag
MOV AH,4CH
INT 21H
CODES ENDS
END START
汇编复习Test6
最新推荐文章于 2019-07-10 16:26:59 发布