用汇编语言编写一个程序,把X*2的值赋给Y。

供稿:hz-xin.com     日期:2025-01-13
用汇编语言编写一个程序,计算(X*Y-Z)/X的值。其中X,Y,Z均为16位带符号数,要求表达式的计算结果存放在数

assume cs:code ,ds:data
data segment
x dw ?
y dw ?
z dw ?
result dw ?
data ends
code segment
start:
mov ax,data
mov ds,ax

mov ax,x
imul y ;x*y

sub ax,z ;x*y-z
sbb dx,0

idiv x ;(x*y-z)/x

mov result,ax ;保存结果
;你确定不要余数吗?如果要的话,在DX中,自己另存吧
mov ax,4c00h
int 21h
code ends
end strat

function ab($a,$b){
$x=$y=0;
if($a>$b){
$x=$a;
$y=$b;
}else{
$x=$b;
$y=$a;
}
echo 'X=$x,Y=$y';
}

DATA SEGMENT
X DW 10
Y DW ?,0;第二个字放进位
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
CLC;清除进位标志
MOV AX,X
ADD AX,X;完成X*2的操作,而且速度比用MUL快
MOV Y,AX
JNC NEXT
mov Y+2,1;存储进位
NEXT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START

data_seg segment
x db 20 ;x可以是-128到+127的任意数
y dw ?
data_seg ends
stack_seg segment stack
db 128 dup(?)
stack_seg ends
code segment
main proc far
assume cs:code,ss:stack_seg,ds:data_seg
start:
mov ax,data_seg
mov ds,ax
sub ax,ax ;ax清零
mov al,x ;字节操作(al)*(SRC)→(ax)
mov bl,2 ;SRC=2
cmp al,0 ;判断al的正负,分别作无符号数乘和有符号数乘
jl do_1
mul bl
jmp do_2
do_1:
imul bl
do_2:
mov y,ax ;把结果送到y
mov ah,4ch
int 21h
main endp
code ends
end start
分分分啊!!还有不懂或是什么疑惑可以问我

楼主敞亮,出手大方。楼上几位的回答,你看谁的回答满意,就采纳谁的;若没有满意的,我再来回答。

建议在汇编中插入C程序 一般算法用C写比较实际

你可以把问题说详细点么?需要输入和输出不,还有X是几位数,你不说完,这程序没有办法编写的,还有你最后的结果是要显示出来还是要放在存储器里面

用汇编语言编写一个程序,把X*2的值赋给Y。
DATA SEGMENT X DW 10 Y DW ?,0;第二个字放进位 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX CLC;清除进位标志 MOV AX,X ADD AX,X;完成X*2的操作,而且速度比用MUL快 MOV Y,AX JNC NEXT mov Y+2,1;存储进位 NEXT:MOV AX,4C00H INT 21H CODE...

汇编语言实现定点原码两位乘法
mov ax,0 mov ah,9 ;输出字符串str1 lea dx,str1 int 21h call input ;调用输入子程序,接收被乘数 mov x,bl ;把被乘数放入变量x中 mov dl,bl neg dl ;对被乘数求补 mov xb,dl ;把补码放入xb变量中 call crlf ;回车换行子程序 mov ah,9 lea dx,str2 ;输出字符串st...

用汇编语言乘法指令实现两个字节相乘的程序并转换成十六进制数显示出...
msg1 db 13,10,' ','$'bbb: push cs pop ds push cs pop es mov al,x mov bl,y mul bl mov z,ax lea di,msg1 inc di inc di mov cx,4again1: mov ax,word ptr[z] rol ax,1 rol ax,1 rol ax,1 rol ax,1 ...

用汇编语言求一个数的平方值
MOVC A,@A+DPTR ;查表,取平方值送累加器A MOV 31H,A ;存结果 SJMP SQTAB: DB 0,1,4,9,16,25,36,49,64,81 ;定义平方表 END 也都是在网上找的,自己学过,但是也忘了点 利用查表的方法编写Y= X2 (X=0,1,2…9 )的程序。编程说明: 设变量X的值存放...

用汇编语言编一个九九乘法表。
;用汇编语言编一个九九乘法表,主要是要梯形结构,最好写一下简单的流程 ;用MASM5.0编译通过,以下是运行结果 ;E:\\masm1>9X9 ;;1X1=1 ;1X2=2 2X2=4 ;1X3=3 2X3=6 3X3=9 ;1X4=4 2X4=8 3X4=12 4X4=16 ;1X5=5 2X5=10 3X5=15 4X5=20 5X5=2...

汇编语言编写程序实现两个64位二进制数相乘
1 RCL WORD PTR X+12,1 RCL WORD PTR X+14,1 DEC CX CMP CX,0 JE @2 JMP @0 @2: MOV AX,Z MOV DX,Z+2 CALL

单片机汇编语言。编写对一个多字节数乘以10的运算子程序
其实这个可以分解为:x*10=x*8+x*2,相当于x<<3+x<<1;即,这个数左移三位加左移一位。输入:R0,N,即首字节地址和位数MUL10: MOV A,R0 MOV B,A ADD A,#10H MOV R1,A MOV A,@R0 MOV R2,#N MOV R3,#3 CLR 00HMUL100: CLR CMUL101: RLC ...

C语言,求一元二次方程的解
对于如下的一元二次方程:ax*x+bx+c=0设计C语言程序,输入一元二次方程的三个系数a、b、c,求解出该方程的两个根,并且允许用户在程序中多次输入不同的系数,以求解不同的一元二次方程的解。编程思路分析:对于该方程,令delta=b^2-4*a*c,从数学的角度来讲,我们需要根据delta的值来判断该...

高手帮忙写一个简单的汇编语言程序【在线等】
DATA ENDS ;数据段 CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX LEA SI, K ;源地址 MOV CX,20 MOV BH, [SI] ;最大最小都初始化为第一个数 MOV BL, BH INC SI A1: LODSB CMP AL, BH ;比较第二和第二个以后的数 JLE A2 ;小于等于的话跳到A2 MOV ...

高分求一个汇编语言的完整程序!
DONE MOV 21H,#00H MOV A,20H INC A DA A MOV 20H,A CJNE A,#24H,DONE MOV 20H,#00H DONE: POP ACC POP PSW RETI ORG 0D59H SSEE: SETB RS1 MOV R5,#05H SSE2: MOV 30H,#20H MOV 31H,#7EH MOV R7,#06H SSE1: MOV R1,#0DDH ...