接口技术|【接口技术】实验一(简易汇编程序调试)
文章目录
- 一. 实验目的
- 二. 实验内容
-
- 实验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”:
文章图片
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘