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


文章目录

  • 一. 实验目的
  • 二. 实验内容
    • 实验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 endsdata segment buf db 12h,22h,4h,15h,9h,63h,1h,60h,62h N equ $-BUF max db ? min db ? data endscode segment assume cs:code,ds:data,ss:stackstart: 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 21hmaxmin 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-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 endscode segment assume cs:code,ds:data,ss:stackstart: 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 21hmaxminproc push ax mov bh,[si] mov bl,bh dec cxA1: inc si mov al,[si] cmp al,bh jbe a2 mov bh,al jle a3 A2: cmp al,bl jae a3 mov bl,alA3: loop A1 pop ax ret maxmin endp code ends end start

运行结果:
接口技术|【接口技术】实验一(简易汇编程序调试)
文章图片

实验1-2-1 从键盘上输入一个字符,如果输入的事大写字母,则在屏幕上输出其对应的小写字母,如果输入了除大写字母外的其他字符,提示信息。
汇编代码:
stacksegment stack db 200 dup(0) stack ends data segment string db ' PLEASE INPUT AN ENGLISH LETTER!', 0ah,0dh, '$' data endscode segment assume cs:code, ds:data, ss:stackstart: mov ax,data mov ds,ax mov ah,01h int 21h cmp al,'A' jl exitL1: cmp al,'Z' jg exit add al,32 mov cl,alexit1: mov dl,cl mov ah,02h int 21h mov ax,4c00h int 21hexit: 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”:
接口技术|【接口技术】实验一(简易汇编程序调试)
文章图片

实验1-2-2 在实验1-2-2的基础上,添加修改代码补充程序,要求:判断输入的字符,如果是大写字母则输出其小写字母,如果输入的字符是小写字母则输出其对应的大写字母,输入其他字符则提示信息。
汇编代码:
stacksegment stack db 200 dup(0) stack ends data segment string db ' PLEASE INPUT AN ENGLISH LETTER!', 0ah,0dh, '$' data endscode segment assume cs:code, ds:data, ss:stackstart: mov ax,data mov ds,ax mov ah,01h int 21h cmp al,'A' jl exitL1: cmp al,'Z' jg L2 add al,32 mov cl,alexit1: 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 21hexit: 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”:
接口技术|【接口技术】实验一(简易汇编程序调试)
文章图片

测试小写转大写,输入“z”,输出“Z”:
接口技术|【接口技术】实验一(简易汇编程序调试)
文章图片

    推荐阅读