汇编复习Test6

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值