1.现有程序如下:
data segment
buf db ‘ai39*5867jfe=kjykgngk339385’
c= $buf
n1 db 0
n2 db 0
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov cx,c
lea si,buf
l: mov al,[si]
cmp al,30h
jb next
cmp al,39h
ja next
inc n1
jmp cont
next: inc n2
cont: inc si
loop l
mov ah,4ch
int 21h
code ends
end start
请回答:(1)该程序完成什么功能?
分别统计buf中数字字符和非数字字符的个数。
(2)该程序执行完后,n1和n2的内容各是多少?
n1=12, n2=15
2.现有程序如下:
data segment
buf db ‘er39*5867jgeewfghyuo9385’
c = buf
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,c
lea si,buf
l: mov al,[si]
cmp al,61h
jb next
cmp al,7ah
ja next
sub al,20h
mov [si],al
next: inc si
loop l
mov ah,4ch
int 21h
code ends
end start
请回答:(1)该程序完成什么功能?
将buf字符串中的小写字母转换成大写字母。
(2)该程序执行完后,buf缓冲区的内容是什么?
er39*5867jgeewfghyuo9385
3.现有程序如下:
data segment
buf db 47h,0a4h,93h,38,-23,55h,251,0,78h
c=$-buf
buf1 db c dup (0)
buf2 db c dup (0)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,c
lea si,buf
lea di,buf1
lea bx,buf2
l: mov al,[si]
cmp al,0
jge pmov [bx],al
inc bx
jmp next
p: mov [di],al
inc di
next: inc si
loop l
mov ah,4ch
int 21h
code ends
end start
请回答:(1)该程序完成什么功能?
把buf缓冲区的内容按大于等于0和小于0分成两组,大于等于0的放在buf1里,小于0的放在buf2里。
(2)该程序执行完后,buf1和buf2缓冲区的内容各是什么?
buf1缓冲区内容:47h,38,55h,0,78h
buf2缓冲区内容:0a4h,93h,-23,251
4.现有程序如下:
data segment
buf1 db 100 dup (?
buf2 db 200 dup (0)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,100
lea si,buf1
lea di,buf2+100
l: mov al,[si]
mov [di],al
inc si
inc di
loop l
mov , ah,4ch
int 21h
code ends
end start
请回答 :(1)该程序完成什么功能?
把buf1中100个字节内容送入buf2中的后100个字节单元中。
(2)如果将指令“lea di,buf2+100”改为“lea di,buf2”之后,程序执行完后的结果如何?
把buf1中的100个字节内容送入buf2中的前100个字节单元中。
5.现有程序如下:
data segment
buf1 db 100 dup (?
buf2 db 100 dup (0)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,100
lea si,buf1
lea di,buf2
l: mov al,[si]
cmp al,100
jb next
mov [di],al
i nc di
next: inc si
loop l
mov ah,4ch
int 21h
code ends
end start
请回答 :(1)该程序完成什么功能?
把buf1中大于等于100的数放到buf2中。
(2)如果将指令“jb next”改为“jae next”,则程序执行结果如何?
把buf1中小于100的数放到buf2中。
6.现有程序如下:
data segment
buf1 db 100 dup (?
sum dw 0
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,100
lea si,buf1
mov ax,0
l: add al,[si]
adc ah,0
inc si
loop l
mov sum,ax
mov ah,4ch
int 21h
code ends
end start
请回答 :(1)该程序完成什么功能?
求buf1中所有数之和。
(2)如果去掉指令“adc ah,0”,则程序执行结果将如何?
出现溢出,高位字节丢失。
7.现有程序如下:
data segment
buf1 db 32h,64h,72h,38h,68h,9ah,89h,0
sum dw 0
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea si,buf1
mov ax,0
l: cmp [si],byte ptr 0
jz ndo
add al,[si]
adc ah,0
inc si
jmp lndo: mov sum,ax
mov ah,4ch
int 21h
code ends
end start
请回答 :(1)该程序完成什么功能?
求所有数的和sum
2)程序执行完后,共执行了多少次相加的操作?
总共完成了7次相加。
8.现有程序如下:
stack segment stack ‘stack’
dw 100 dup(0)
stack ends
data segment
buf db 100 dup(0)
data ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea di,buf
l: mov ah,1
汇编大作业
汇编语言 期末大作业。一 通过键盘输入月份 月份在1 12之间,要求验证所输入月份的合法性,按 e 或 e 键表示程序结束 在屏幕上显示对应该月份的英文单词 返回 data segment state1 db please input your search month 0dh,0ah,state2...
汇编上机作业
微机原理上机实验报告 一 班级 学号姓名 实验目的。掌握汇编语言程序的上机过程与debug调试方法。实验内容。比较两个字符串string1和string2所含的字符是否相同。若相同则显示 match 否则,显示 no match 一 源程序见资料。二 按照上课所讲的操作步骤对以上所给源程序进行调试,...
汇编上机作业
指令系统练习。1.指出下列的错误并更正 very,block均为偏移量 mov ds,very mov very si es bl mov block dx si al mov very,block 2.在指令push ax的执行过程中,要进行的操作是 sp 2 sp sp 1 sp sp 2 sp...