汇编的编程题

作者&投稿:移园 (若有异议请与网页底部的电邮联系)
汇编编程题~

;产生n个斐波纳契数数列。
;该数列的第1、2个数分别为0、1,从第3个数开始,每一个数等于前两个数之和。
;提示 存储空间分配:
; NUM DW 20H
; FIBONA DW 50H DUP(0)
; 寄存器:AX、BX中存放数列中连续两个元素,CX为计数器,DI为存储数列元素的指针。
assume ds:data,cs:code
data segment
Num dw 4h
Fibona dw 50h dup(0)
data ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,ds:[0] ;;;;;;;;
mov word ptr ds:[4],1
mov di,6h
s:
mov ax,-4[di]
mov bx,-2[di]
add ax,bx
mov [di],ax
add di,2
loop s

mov ax,4c00h
int 21h
code ends
end start

给你一个通用的范例,键盘输入5个数求和的程序。
data segment
d1 db 20 dup(0)
data ends
stack segment
db 128 dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
lea di,d1
mov cx,5
l0:
mov ah,1 ;输入数为一位数字连续输入,多位数字时稍加改变即可
int 21h
mov [di],al
inc di
loop l0
cld
mov dl,0
mov bx,000fh
mov cx,5
mov si,0
l1:
lodsb ;将ascii码值转换为二进制并相加
and ax,bx
add dl,al
loop l1
cmp dl,10
jb b1
mov ax,0
mov al,dl
cbw
mov bl,10
div bl
add ah,30h ;讲二进制转换为ascii码
add al,30h
xchg al,ah
mov bx,ax
mov dl,ah
mov ah,2
int 21h
mov dl,bl
mov ah,2
int 21h
jmp b2
b1:
add dl,30h
mov ah,2
int 21h
b2:
mov ax,4c00h
int 21h
code ends
end start

;第1题 计算bl乘以20
;将乘积结果存放在bx中
mov bh,0
mov ch,0;记录移位次数
mov al,20
s1:
shr al,1;把al中内容逻辑右移一位
test cf,1
jz s2;cf为0的话直接跳到s2

mov cl,ch
sal bx,cl
s2:
inc ch
cmp ch,8
jnz s1

ret;结束,乘积结果放在bx中

;第2题 传输字符
code segment
assume cs:code
main proc far
start:
push ds
push es
mov ax,3000h
mov ds,ax
mov ax,4000h
mov es,ax
mov si,0
mov di,0
mov cx,50h
cld
rep movsb
pop es
pop ds
main endp
code ends
end
;第3题 计算非数字字符个数
code segment
assume cs:code
main proc far
start:
mov bx,0;bx里存放着非数字字符的个数
ss1:
mov ah,1
int 21h;输入一个字符放在al里

cmp al,'$'
jz display

;判断是否为0-9
cmp al,'0'
jb ss2
cmp al,'9'
jbe ss1

ss2:
inc bx
jmp ss1

;以二进制的形式显示出bx中的内容
display:
mov cx,16
ss3:
mov dl,'0'
shl bx,1
cmp cf,0
je ss4
inc dl
ss4:
mov ah,02
int 21h
loop ss3
;然后最后输出'B'表示二进制
mov dl,'b'
mov ah,02
int 21h

main endp
code ends
end

1:mov cl,2
shl bl,cl
mov al,bl
shl bl,cl
add bl,al

2:mov ax,3000h
mov si,ax
mov ax,4000h
mov di,ax
mov cx,50h
rep movsb


C语言编程题目
下面是一些C编程题目:1. 编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数。2. 编写程序,从键盘输入三角形的三条边长,判断它们是否可以构成三角形,并输出三角形的类型(等边、等腰、一般)。3. 编写程序,从键盘输入字符串,统计其中的大写字母、小写字母、数字和其他字符的个数,并...

大学福音经典编程题适用于专升本
2.数字三角形 3,编程求某年第 n 天的日期。 4.求周岁 5.编程求出使该算式成立时的这两个数 6.功能:(较难不用看) 编程求任意给两个日期(年 月日)相差的天数。 7.把一个数的二进制奇数位和偶数位交换 8.题目要求找出数组中的两个单身狗 9,数字字符串转换为整数 10.升序的数组插入一个数,还保持升...

c语言编程题 一个数如果恰好等于它的因子之和,这个数就称为完数。例...
int main(){int i,j,s;for(i=2;i<=1000;i++){s=1;for(j=2;j<=i\/2;j++)if(i%j==0)s+=j;if(s==i){ printf("%d its factors are 1 ",i);for(j=2;j<=i\/2;j++)if(i%j==0)printf("%d ",j);printf("\\n");} } return 0;} ...

c++编程题,求大神解答。
剩下的机器人相邻关系会改变,重新计算碰撞时间,重复上述步骤,直到没有碰撞发生 C++代码如下:include <bits\/stdc++.h> \/\/ C++万能头文件 using namespace std;using tri = tuple<double, int, int>; \/\/ 发生碰撞的时间和机器人编号 int main() { int n, k;cin >> n;k = n; \/\/ 剩...

C语言编程题:从键盘输入一个小写字母,在屏幕上显示其对应的大写字母
【C语言输入小写字母,输出显示为大写字母主要用到字符】例子如下:直接编译,程序输出结果中输入任意小写字母,按回车,得到结果如下图所示:

Java编程题: 编写一个Student类,包含name和age属性,提供有参构造方法...
import java.util.Objects;public class Student { public String name;public int age;Student(){} Student(String name,int age){ this.name=name;this.age=age;} public String toString(){\/\/重写toString()return "name: "+name+" age: "+age;} public boolean equals(Object o) {\/\/重写...

c语言编程题,用for循环!急急急
include<stdio.h>int main(){int hg,bhg;for(hg=1;hg<2000;hg++)for(bhg=0;bhg<2000;bhg++)if(hg*5-bhg*18==9931){printf("%d",hg);}return 0;}

C语言编程题目?
int main(){ int i,a1=2;\/\/先输出a1 printf("%d ",a1);\/\/还需循环19次 for(i=2;i<21;i++){ \/\/计算下一项 a1=2*a1-1;\/\/输出本项 printf("%d",a1);\/\/每输出5个就换行 if(i%5==0)printf("\\n");\/\/否则,以一个空格进行分隔 else printf(" ");} return 0;} 输出结果...

请问一下这道C语言编程题怎么做?
按照题目要求编写的用凯撒密码加密的C语言程序如下 include<stdio.h> int main(){ char s[80];int offset,i;fgets(s,80,stdin);scanf("%d",&offset);for(i=0;s[i]!='\\0';i++){ if('A'<=s[i] && s[i]<='Z')if(offset>=0)s[i]='A'+(s[i]-'A'+offset)%26;else s...

VB编程题:编写一个产生1 至100之间的随机整数的Function 过程_百度...
可以使用Rnd*98,产生的是[0,98)的随机数,而int(Rnd*98)产生的是[0,97]之间的随机整数,那么int(Rnd*98)+2产生的就是[2,99]之间的随机整数了,符合目标1到100之间的随机数目的。函数代码如下:Public Function sj() As Integer Randomize sj = Int(Rnd * 98) + 2 End Function ...

恩施市13822358533: 两道计算机汇编语言大题五、程序设计题1、要求将DATA1数据区中的20个字节数据传送到DATA2数据区中(写出完整程序)2、编写程序,实现计算(W - ... -
地狗活血:[答案] 1.DATA SEGMENT DATA1 DB 20 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 DATA2 DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DATA1 LEA DI,DATA2 CLD ...

恩施市13822358533: 几道用汇编语言编程的题
地狗活血: 1.assume cs:codecode segmentstart: mov cx,10 mov dx,0 s: add dx,cx loop smov ax,4c00h int 21hcode endsend

恩施市13822358533: 汇编语言程序设计题实现有符号数绝对值的加法运算设字节变量X和Y中存放的是16位有符号数,试编写程序实现|X|+|Y|结果送AL的计算 -
地狗活血:[答案] mov ax,x test ah,0xF0 //是否为负数 jnz nz: not ax nz: mov dx,ax mov ax,y test ah,0xF0 ;是否为负数 jnz nz: not ax nz: add ax,dx ;高16位在dx,低16位在ax 把结果送入al是不行的

恩施市13822358533: 求汇编高手做个简单的编程题
地狗活血: assume cs:code ,ds:data,ss:stackdata segmentstring db 'helloworld$'dw ?data endscode segmentstart:mov ax,datamov ds,axlea bx,string ;指向字符串xor cx,cx ;计数清零again:mov dl,[bx]cmp dl,'$' ;是否为结束符jne overinc cx ;计数加1inc ...

恩施市13822358533: 一道简单的汇编程序题!急求!在线等! -
地狗活血: CLC ;清除CF MOV CX,AX SUB AX,BX ;AX←AX-BX,影响CF JC AA ;CF=1转AA去执行(即AX MOV DI,2800H ;结果指针DI=2800H MOV [DI],AX ;结果送到2800H和2801H单元 JMP LP ;暂停 AA:SUB BX, CX ;BX←BX-CX MOV DI,2800H...

恩施市13822358533: 高分请教几道简单的汇编题?
地狗活血:1.会使ESP-4 2.PUSHAD指令在堆栈中按顺序压入下列寄存器:EAX,ECX,EDX,EBX,ESP,EBP,ESI和EDI3 esp-20=13ffa4 EAX,ECX,EDX,EBX,ESP,EBP,ESI和EDI pushad的时候ESP依次减了这么多.每个4字节.加起来正好是20H

恩施市13822358533: 求助大神,编程题(汇编语言的) -
地狗活血: ASSUME CS:CC, DS:QW ;=================================== DISP MACRO X ;宏定义MOV DX, XMOV AH, 9INT 21H ENDM ;=================================== QW SEGMENTZ1 DB 'hello world $'Z2 DB 'assembler ...

恩施市13822358533: 汇编语言试题
地狗活血: 我来帮你做做吧="=给我分喔. 1、将AX中的高字节和低字节内容交换; xchg al,ah 2、用寄存器BX、SI和位移量20H指定一个字与DX的内容相加,把结果送回存储器单元. ADD BX,DX 3、定义字符串变量STRING的值为HAPPY. db 'happy'4、将AX寄存器及CF标志位同时清零. xor ax,ax或mov ax,0或add ax,0 三、将十进制数75以压缩BCD码送入AX,正确的指令是什么 mov ax,0075h祝你好运~

恩施市13822358533: 谁帮我做一道“汇编语言”的编程题,无限感谢! -
地狗活血: DATA SEGMENT BUF DB 10 DUP(?) SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0000H MOV CX,10 MOV SI,OFFSET BUF A1: MOV BL,[SI] ADC AX,BX INC SI ...

恩施市13822358533: 汇编编程题目
地狗活血: Dim A(1 To 10) As Single Private Sub Command1_Click() '请在第一个文本中输入成绩,成绩之间用空格隔开 Dim s As String s = Trim(Text1.Text) d = Split(s, " ") ReDim A(1 To UBound(d) + 1) As Single For i = 1 To UBound(A) A(i) = d(i - 1) ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网