【接口技术】实验一:简易汇编程序调试

文章目录

  • 一. 实验目的
  • 二. 实验内容
    • 实验1-1-1
    • 实验1-1-2
    • 实验1-2-1
    • 实验1-2-2

一. 实验目的

掌握在集成开发软件环境中汇编程序的编写、调试方法。所用开发环境为TPC-ZK-II。

二. 实验内容

实验1-1-1

在以BUF为首地址的字节存储区存放有若干个无符号数,求该序列中的最大值,并在屏幕上输出该最大值。输入如下源程序并运行,查看运行结果。要求:了解汇编指令,学会单步调试。

汇编代码:

stack segment stack
db 200 DUP(?)
stack ends

data segment
buf db 12h,22h,4h,15h,9h,63h,1h,60h,62h
N equ $-BUF
max db ?
min db ?
data ends

code segment
assume cs:code,ds:data,ss:stack

start:
    mov ax,data
    mov ds,ax
    mov si,offset buf
    mov cx,N
    call maxmin
    mov cl,bh
    mov ah,02h
    mov dl,cl
    int 21h          
    mov ax,4c00h
    int 21h
  
maxmin proc
    push ax
    mov bh,[si]
    mov bl,bh
    dec cx   
A1:
    inc si
    mov al,[si]
    cmp al,bh
    jle a3 
A2:
    mov bh,al
A3: loop A1
    pop ax
    ret
maxmin endp
code ends
end start

运行结果:
【接口技术】实验一:简易汇编程序调试_第1张图片

实验1-1-2

在实验1-1-1的基础上,添加修改代码补充程序,要求能同时求出最大值和最小值,并输出。

汇编代码:

data segment
buf db 12h,22h,4h,15h,9h,63h,1h,60h,62h;
N equ $-BUF
max db ?
min db ?
data ends

code segment
assume cs:code,ds:data,ss:stack

start:
    mov ax,data
    mov ds,ax
    mov si,offset buf 
    mov cx,N 
    call maxmin
    mov max,bh 
    mov min,bl 
    mov ah,02h 
    mov dl,max 
    int 21h  
    mov ah,02h 
    mov dl,min 
    int 21h
    mov ax,4c00h
    int 21h
    
maxmin  proc
    push ax
    mov bh,[si] 
    mov bl,bh
    dec cx
    
A1:
    inc si
    mov al,[si]
    cmp al,bh 
    jbe a2 
    mov bh,al
    jle a3 
A2:
    cmp al,bl
    jae a3 
    mov bl,al

A3: loop A1 
    pop ax
ret
maxmin endp
code ends
end start

运行结果:
【接口技术】实验一:简易汇编程序调试_第2张图片

实验1-2-1

从键盘上输入一个字符,如果输入的事大写字母,则在屏幕上输出其对应的小写字母,如果输入了除大写字母外的其他字符,提示信息。
汇编代码:

stack   segment stack
        db 200 dup(0)
stack ends
data segment
string db ' PLEASE INPUT AN ENGLISH LETTER!', 0ah,0dh, '$'
data ends

code segment
assume cs:code, ds:data, ss:stack

start:
    mov ax,data
    mov ds,ax
    mov ah,01h
    int 21h
    cmp al,'A'
    jl exit

L1: 
    cmp al,'Z'
    jg exit
    add al,32
    mov cl,al

exit1:
    mov dl,cl
    mov ah,02h
    int 21h
    mov ax,4c00h
    int 21h

exit:
    mov dl,0ah
    mov ah,02h
    int 21h
    mov ax,data
    mov ds,ax
    mov dx,offset string
    mov ah,09h
    int 21h
    mov ax,4c00h
    int 21h
code ends
end start

运行结果:

输入“G”,输出“g”:
【接口技术】实验一:简易汇编程序调试_第3张图片

实验1-2-2

在实验1-2-2的基础上,添加修改代码补充程序,要求:判断输入的字符,如果是大写字母则输出其小写字母,如果输入的字符是小写字母则输出其对应的大写字母,输入其他字符则提示信息。
汇编代码:

stack   segment stack
        db 200 dup(0)
stack ends
data segment
string db ' PLEASE INPUT AN ENGLISH LETTER!', 0ah,0dh, '$'
data ends

code segment
assume cs:code, ds:data, ss:stack

start:
    mov ax,data
    mov ds,ax
    mov ah,01h
    int 21h 
    cmp al,'A' 
    jl exit

L1: 
    cmp al,'Z' 
    jg L2
    add al,32 
    mov cl,al

exit1:
    mov dl,cl
    mov ah,02h
    int 21h 
    mov ax,4c00h
    int 21h 

L2:
   cmp al,'a'
   jl exit
   cmp al,'z' 
   jg exit
   sub al,32 
   mov cl,al   
 
exit2:
    mov dl,cl
    mov ah,02h
    int 21h
    mov ax,4c00h
    int 21h

exit:
    mov dl,0ah
    mov ah,02h
    int 21h
    mov ax,data
    mov ds,ax
    mov dx,offset string 
    mov ah,09h
    int 21h
    mov ax,4c00h
    int 21h
code ends
end start

运行结果:

测试大写转小写,输入“Z”,输出“z”:
【接口技术】实验一:简易汇编程序调试_第4张图片
测试小写转大写,输入“z”,输出“Z”:
【接口技术】实验一:简易汇编程序调试_第5张图片

你可能感兴趣的:(接口技术,接口)