大哥大姐叔叔阿姨们,会的帮忙解答下 感谢啦~ 这是程序段编写题。可能对于你们很简单 谢谢拉,请标准的解答

2024-05-15

1. 大哥大姐叔叔阿姨们,会的帮忙解答下 感谢啦~ 这是程序段编写题。可能对于你们很简单 谢谢拉,请标准的解答

1.  MOV  AL,   BL
     DIV    CL
     MOV    BH,2
     MUL    BH
     MOV   AH,0
     MOV    DX,AX

2. 	D_SEG	SEGMENT
   	AUGEND  DW   99251
	SUM	DW   ?
	D_SEG	ENDS

	E_SEG	SEGMENT
	ADDEND  DW  -15960 
 	E_SEG	ENDS

	C_SEG	SEGMENT

	START	MOV AX,	D_SEG
		MOV DS, AX
		MOV AX, E_SEG
		MOV ES,	AX
		ADD AUGEND,ADDEND
		MOV  SUM,AUGEND
	START	ENDP

	C_SEG	ENDS
		END   	START

不知道你的AUGEND为什么是99251,这超过了65536,一个变量存不了这么大的数啊!?

大哥大姐叔叔阿姨们,会的帮忙解答下 感谢啦~ 这是程序段编写题。可能对于你们很简单 谢谢拉,请标准的解答

2. 汇编的习题

1,① 176(0000000010110000) (过程 B=11,11乘16得176)     ②   -80(1111111110110000)(最高位为符号,其余位求补(取反加以)得出1010000,5乘以16得80)

3. MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

左移4位是乘以16。
主要思想是:DX左移4位,AX左移四位,但是要将AH的高四位接到DL的低四位。
如果这样:MOV BL,AH    OR DL,BL(将AH赋给DL),则AH的高四位对应DL的高四位,这样是不行的
SHR BL,CL   将BL(AH)右移四位,然后再赋给DL,就行了

MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

4. 试分析下面的程序段完成什么功能?

程序实现了两个数的相加
mov al 05            al=5
shl al 1                al逻辑左移1位
mov bl al            将al中的值送到bl中
mov cl 2             cl=2
shl al cl               al逻辑左移cl(即2)位
add al bl             把al和bl相加

5. 在汇编语言MOV CL,04 SHL DX , CL MOV BL, AH SHL AX ,CL SHR BL ,CL OR DL, BL 实现什么功能?

dx和ax中联合存放一个32位的二进制数(dx存放高16位),这个程序段把它左移4位。 
MOV CL,04 
SHL DX,CL ;以上两行指令是把dx左移4位,这样dx的最低4位为0 
MOV BL,AH ;把ax的最高四位放在bl的高四位上暂存(以免ax左移四位时高四位丢失) 
SHL AX,CL ;实现ax左移四位 
SHR BL,CL ;把bl(存放的是ax原来的高16位)右移4位,这样ax原来的最高4位就放到bl的低4位了 
OR DL,BL ;将bl和dl相或,也就是把ax原来的最高四位写入到dx的最低四位

在汇编语言MOV CL,04 SHL DX , CL MOV BL, AH SHL AX ,CL SHR BL ,CL OR DL, BL 实现什么功能?

6. 试编写一个汇编语言程序,要求比较两字符串STRING1和STRI

DATAS SEGMENT
     str1 db 'hellowo'
     str2 db 'hellowo'
     str3 db 'match$'
     str4 db 'not match$'
                              ;此处输入数据段代码  
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,ES:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV EX,AX
    ;此处输入代码段代码
    
 
    MOV CX,4
    MOV DI,OFFSET STR1
    MOV SI,OFFSET STR2
    REPZ COMSB
    JZ LAB1
    JNZ LAB2

LAB1:
    mov dx,offset str3 
    mov ah,09h 
    int 21h 
    mov ah,4ch 
    int 21h 
LAB2:
    mov dx,offset str4 
    mov ah,09h 
    int 21h 

    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
以后尽量自己处理,不要老找别人给答案,答案永远都不是完整的,失去目标时你就会知道可怕

7. 下面一段程序完成什么操作 MOV CL,04 SHR DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

mov cl,04;cl值为4
shl dx,cl;逻辑左移4位
mov bl,ah;ah中值送到bl中
shl ax,cl;左移4位
shr bl,cl;右移4位
or dl,bl;二者异或操作 
 
结果是把 DX:AX 的32位值 左移 4位

下面一段程序完成什么操作 MOV CL,04 SHR DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

8. 试编写一个程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B及B+2单元中。

双字,低位在AX中,高位在DX中,

所以,当数字符号位:即DX的最高位为1时,(即负数),需要对数字进行NEG操作,即求取数的补数,即求绝对值。
第7步是为了防止neg ax时产生进位,