导航:首页 > 编程语言 > 汇编程序问题

汇编程序问题

发布时间:2022-11-17 23:07:11

㈠ 关于汇编程序问题

用汇编语言编程如下:
CODE SEGMENT
ASSUME CS:CODE
A DW 1357H ;随意定义两个数据.
B DW 2468H
START: MOV AX, CODE
MOV DS, AX
MOV AX, A ;---------开始处理.
TEST AX, 1
JNZ A_ODD ;为奇数转移.
MOV BX, B
TEST BX, 1
JNZ AE_BO ;为奇数转移.
ALL_E: SHR AX, 1 ;皆为偶数.
SHR BX, 1 ;除以2
XCHG AX, BX ;交换一下,再去交换存放.
JMP AE_BO
A_ODD: MOV BX, B
TEST BX, 1
JNZ AE_BO ;都为奇数?
JMP _END ;否则就是A奇B偶,不用处理了.
AE_BO: MOV B, AX ;要是B奇A偶,交换存放.
MOV A, BX
_END:MOV AX, 4C00H;-------处理完毕,是不是很简短?
INT 21H
CODE ENDS
END START

本程序已经经过调试验证,可以满足题目要求。
结果,必须用DEBUG来查看。

用C语言编程就更简单了。

㈡ 汇编程序问题

1 系统软件:
是能提高程序设计者的工作效率、方便用户使用、可以对计算机进行管理的软件。
包括:操作系统、监控软件、编译程序、,汇编程序、数据库、标准程序库。
因此 很明确编译程序,汇编程序属于系统软件。
2 只有为解决某一特殊问题而编写的程序才能叫应用软件。谢谢支持!

㈢ 汇编程序小问题

汇编十六进制的数如果是字母开头,就得在数字前面加一个0,DB是定义一个字节的数字,即值为A,即十进制是10,对应的ASCII码是换行,即从新行开始显示。

㈣ 汇编程序的问题

在dw行之后,mov bx,0之前
加入标号
start:
在end后添上标号,即改为end start
就你原来的程序,你能告诉我从哪里开始执行吗?(这就是错误根源),阿门。。。
编译选项
ml /c file.asm
link16 file.obj

㈤ 汇编子程序的问题

你的子程序放的位置不对,修改如下:
DATAS SEGMENT
str1 db 'again$'
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
main proc far

START:
MOV AX,DATAS
MOV DS,AX
call crlf
call crlf

call crlf

MOV AH,4CH
INT 21H
main endp
;====================

crlf proc near

mov ah,9
mov dx,offset str1
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h

ret
crlf endp
;==================
CODES ENDS
END START

㈥ 汇编语言问题

①mov ax,buffer是把以buffer为首地址的连续两字节的内容送入ax中。
[buffer]这个用法是错误的。[...]表示以地址"..."中的内容为偏移地址。
mov ax,400H,正确,是将400H送入AX中。
mov ax,[400H],错误,因为[n]本身并不能指明所用的段寄存器。汇编程序可能会错误地将[n]翻译为立即寻址情况下的立即数n。
②(...)表示地址"..."中的内容。
③CS:给出当前代码段首地址
④25H是几位,这个具体情况具体对待。
⑤mov DISP[BX+DI],DL,正确,DISP[BX+DI]采用基址加变址寻址方式,BX+DI+DISP作为操作数的偏移地址。把DL中的内容送到DS段中以BX+DI+DISP为偏移地址的字节单元中。
⑥mov DS:DISP[BP],1234H,正确,DS:DISP[BP]采用变址寻址方式,BP+DISP作为操作数的偏移地址。由于BP默认的段寄存器是SS,而这里显示是想把它放入数据段中,所以这里声明段寄存器DS。把1234H送入DS段中以BP+DISP为偏移地址的字单元中。
mov Byte PTR[SI],40,寄存器间接寻址。40为字节时就是00101010,为字时就是0000000000101010,...
这都是很基本的概念,建议多看看书吧。(P.S. 没书?买一本咯!)

㈦ 汇编程序问题

这个是三级汇编的试题。有个外部模块io.obj,不过这个文件很难下载到本。

DX清零,是因为dx、ax是合起来作为除法源的,而不是只有ax

㈧ 汇编程序出错

DSEG SEGMENT

ADR DW 5A62H, 3122H, 8C36H

FLAG DB 0FFH ;同为偶数FLAG置1,同为奇数置0,其余情况置全1

DSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START:
MOV AX, DSEG
MOV DS, AX

MOV BL, 2H

MOV AX, ADR
DIV BL
MOV BH, AH ;第一个余数

MOV AX, ADR + 2
DIV BL
ADD BH, AH ;两个余数相加

MOV AX, ADR + 4
DIV BL
ADD BH, AH ;三个余数相加

;判断三个余数之和:

CMP BH, 0 ;为零,就是三个偶数;
JZ QO
CMP BH, 3 ;为三,就是三个奇数;
JZ QJ
JMP OVER
QO:
MOV FLAG, 1H
JMP OVER
QJ:
MOV FLAG, 0H
OVER:
MOV AX, 4C00H
INT 21H
CSEG ENDS
END START

再试试看。

㈨ 问几个关于汇编程序的问题

0000H和000BH是固定的,000BH是中断入口地址
那个0100H应该是根据程序的长短来定的,要看你单片机的程序存储器有多大,还有程序的前面要放多少东西了。7FF8H
这个是0809AD转换器的地址,51单片机的P2口默认为十六位地址的高八位地址,要根据是不是有其它的外围设备来定地址,如果没接的话,可以随便来定!!MOVX
@DPTR,A这句是用来启动0809,不用知道A里放的是什么东西,有这句的话0809就会被启动了
HERE
SJMP
HERE
这句无限循环
应该是用来等待中断的
end的话程序会被终止,中断程序也不会再被执行了
LED那个你需要知道LED的结构很简单,网上很容易找
硬件地址的分配是看你接的那几根线了,原则上只要不重复应该都可以
有一些
是电路直接与单片机I/0口连接,而没有经过AD转换,请问什么“情况下可以进行这样的处理,也就是说,单片机I/0口可以接多大的电流或者电压?”这句电压的话一般是5V,但是那个AD不是因为电压不匹配才接的,单片机要的是数字量,AD是将模拟两转换成数字量的!

㈩ 汇编程序执行问题

汇编程序都是顺序执行,如果你想跳转到一个其他位置,必须执行跳转指令,否则就是按顺序执行。汇编没有返回指令,返回指令都是伪指令,编译后都是跳转指令。。。如果你想让一个程序不按顺序执行,在汇编里必须用到跳转指令。。。。 C语言每个函数执行完后返回都是调用了跳转指令。。。
在汇编里,CPU的操作时详细到每一步,比如形参传递,必须将形参靠指令放入参数表,然后调用跳转指令,完成函数调用,运算中自动变量出栈入栈都必须你亲自考指令完成,而且必须要保存函数调用的返回地址,执行完后将函回值放到返回值位置,然后跳到这个地址,完成一次函数调用。。。。
当然上述过程是C语言的规则,如果是汇编程序你随意,没必要按照C语言的方式。。。

阅读全文

与汇编程序问题相关的资料

热点内容
服务器软路由怎么做 浏览:287
冰箱压缩机出口 浏览:223
OPT最佳页面置换算法 浏览:640
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:341
有什么学习高中语文的app 浏览:283
安卓手机的表格里怎么打勾 浏览:411