免费做网站怎么盈利网络营销最基本的应用方式是什么
本篇博客主要分享几道汇编语言例题
编写一完整的程序,从键盘输入一组字符,直到输入“0”为止,当输入是小写字母时,则修改为大写字母,输入的字符存放在string为首址的存储单元中。
data segment ;数据段定义
string db 100 dup(?)
data ends
code segment
assume cs:code,ds:data ;定义寄存器与段关系
start:
mov ax,data
mov ds,ax
mov di,offset string
again: ;again定义
mov ah,1 ;1->ah
int 21h
cmp al,'0' ;比较al,'0'
je exit ;二者相等,转到exit
cmp al,'a' ;比较al,'a'
jb next ;al<'a',转到next
cmp al,'z' ;比较al,'a'
ja next ;al>'z',转到next
sub al,20h ;al=al-20h(大小写转化)
next: ;next定义
mov [di],al
inc di ;di=di-1
jmp again ;跳转again
exit: ;exit定义
mov ah,4ch
int 21h
code ends
end start
设内存缓冲区SOURCE中有100个字节数据99H,编写一完整的程序,将它传送到TARGET开始的存储单元中。
data segment
source db 100 dup (99h)
target db 100 dup (?)
data ends
code segmentassume cs:code, ds:data, es:data
start :mov ax, datamov ds, axmov es, axmov si, offset sourcemov di, offset targetmov cx, 100cldrep movsb mov ah, 4chint 21h
code endsend start
3.设内存缓冲区BUF中存有50个字符,编写一完整的程序,统计数字字符的个数,将结果保存在N_DIGIT单元,其他类型字符个数保存在N_OTHER单元。(10分)。
提示:数据结构定义如下:
DATA SEGMENT
BUF DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共50个字符
N_DIGIT DB ? ;保存字符串中数字字符个数
N_OTHER DB ? ;保存其他类型字符个数
DATA ENDS
DATA SEGMENTBUF DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共50个字符
N_DIGIT DB ? ;保存字符串中数字字符个数
N_OTHER DB ? ;保存其他类型字符个数
DATA ENDScode segmentassume cs:code, ds:data,
start :mov ax, datamov ds, axmov cx,50 ;cx保存字符串长度lea si,buf ;指向第一个字符
countchar:mov al,[si]
cmp al,30h
jb other
cmp al,39h
ja other
inc N_DIGIT
jmp continue
other:inc N_OTHER
continue:
inc siloop countchar
mov ah, 4chint 21hcode ends
end start
4、编程将存放在HEXN中的一位十六进制数转换为ASCII码,并存入ASCN中。数据段如下:(10分)
DATA SEGMENT
HEXN DB ?
ASCN DB ?
DATA ENDS
DATA SEGMENT
HEXN DB ?
ASCN DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATAMOV DS,AXMOV AL,HEXNCMP AL,9 JBE LP1ADD AL,7LP1:ADD AL,30HMOV ASCN,ALMOV AH,4CHINT 21H
CODE ENDSEND START
5.设内存缓冲区BUF中存有100个字符,写一个子程序,统计BUF中大写字符、小写字符个数,将结果分别保存在N_CHAR1、N_CHAR2单元。(10分)。提示:数据结构定义如下:
DATA SEGMENT
BUF DB ‘AJUuiy898@#EWDFyuii*&^9807jk...’; 共100个字符
N_CHAR1 DB ? ;保存字符串中大写字符个数
N_CHAR2 DB ? ;保存字符串中小写字符个数
DATA ENDS
p1 proc far
push cx
push sipush axmov cx,100 ;cx保存字符串长度lea si,buf ;指向第一个字符
countchar:mov al,[si]cmp al,’A'
jb continuecmp al,’Z’ja n_charinc byte ptr [N_CHAR1]jmp continue
n_char:cmp al,’a’jb continuecmp al,’z’ja continueinc byte ptr [N_CHAR2]
continue:
inc siloop countcharpop axpop sipop cxret
p1 endp