高分悬赏,汇编语言高手进

作者&投稿:越翟 (联系方式在网页底部的电邮联系)
高分悬赏 汇编语言题请高手来解答。~

看了下,程序编写正确,没有问题。至于你说到的编译时错误,我想与星研集成环境软件有关。

补充回答:
1、org 100h
调整偏移量伪指令ORG:告诉汇编程序,本伪指令下面的内存变量从该“数值表达式”所指定的地址开始分配。
如非特别需要,没有必要,可有可无。
2、loop Q0
循环指令:跳转到标号Q0处,继续执行循环体。
3、mov ah,4ch
dos功能调用4ch号功能:结束程序
4、int 21h
dos功能调用

这些是汇编语言的常识,必须掌握。

由于没有相应的硬件系统可以调试,所以仅仅根据以前的作业给你两段关键程序,供参考吧。

传输端(发送机)

把字符串从COM1端口传输出去。在传输过程中,传输速率为9600波特,字长为8位,1位停止位,无齐偶校验。
.MODEL SMALL

.DATA

MSG DB "Hello, World";此处我借用hello,world字符,实际时你加一个中断调用键盘输入即可。

MLen EQU $-MSG

.CODE

.STARTUP

MOV AL, 0E3H ;0E3—9600、无齐偶校验、字长8位,1位停止位

MOV DX, 0

MOV AH, 0

INT 14H ;初始化通信口COM1

MOV BX, OFFSET MSG

MOV CX, MLen

MOV DX, 0

again:

MOV AL, [BX]

MOV AH, 1

INT 14H

TEST AH, 80H ;如果发送字符失败,继续发同一个字符,这里可能

JNZ again ;构成死循环。在实际工作过程中,还有其它考虑。

INC BX

LOOP again

.EXIT 0

END

显示端(接收机)

把从COM1端口读入的字符显示在屏幕上。如果通信端口数据未准备好,则程序处于等待状态;若传输出错,则用红色显示字符"?"。

……

again:

MOV DX, 0

MOV AH, 3

INT 14H

TEST AH, 1H ;检测状态字节AH的最后一位,看数据是否准备好

JZ again

MOV DX, 0

MOV AH, 2

INT 14H ;从COM1端口读字符

TEST AH, 80H ;检测读字符是否成功

.IF ZERO? ;读字符成功

AND AL, 7FH ;屏蔽掉最高位,使之为字符

MOV BL, 15 ;正常颜色:白色

.ELSE

MOV AL, '?' ;显示字符"?"

MOV BL, 12 ;错误颜色:红字

.ENDIF

MOV BH, 0

MOV AH, 0EH

INT 10H

JMP again

1. 用DEBUG编写程序,在屏幕上显示一个字符串HELLO!,并以A.COM为文件名存盘

复制下面的文本内容,粘贴于记事本(注意:不要删除中间的空行),保存为A.TXT,然后在DOS提示符下输入:DEBUG <A.TXT,Ok。

e10d 'HELLO!$'
a100
lea dx,[10d]
mov ah,9
int 21
mov ax,4c00
int 21

rbx
0

rcx
14

na.com

w100

q

-----------------------------------------
2. 编写完整汇编程序,将内存中10个有符号数求和。

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Adding.asm

Adding SEGMENT
ASSUME CS:Adding,DS:Adding
ORG 100H

Start: jmp Begin

Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10个有符号数

Deci_Sum DW ?

Begin: lea si,Decimal
cld
mov cx,9
lodsw

Adding0: add ax,[si]
inc si
inc si
loop Adding0
mov [si],ax

Exit_Proc: mov ax,4c00h ;结束程序
int 21h

Adding ENDS
END Start
-----------------------------------------
3. 编写完整程序将内存中一个无符号字节数以16进制的形式显示在屏幕上

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Hex_ASCII.asm

Hex_ASCII SEGMENT
ASSUME CS:Hex_ASCII,DS:Hex_ASCII
ORG 100H

Start: jmp Begin

DecimalNum db 76 ;无符号字节数

Change_Hex proc near
cmp al,9
ja Charactor
or al,30h
stosb
ret
Charactor: sub al,9
or al,40h
stosb
ret
Change_Hex endp

ChangeHex0 proc near
xor ah,ah
mov cl,4
shl ax,cl
shr al,cl
xchg ah,al
call Change_Hex
xchg ah,al
call Change_Hex
ret
ChangeHex0 endp

Begin: lea di,HeximalASC ;显示十六进制符号字符串地址
cld ;设置变址寄存器变址方向
mov al,DecimalNum
call ChangeHex0
mov al,'$'
stosb
lea dx,HeximalASC ;字符串首地址
mov ah,9 ; 显示结果
int 21h

Exit_Proc: mov ax,4c00h ;结束程序
int 21h

HeximalASC:

Hex_ASCII ENDS
END Start
-----------------------------------------
4. 编写完整汇编程序,统计内存中10个有符号数中正数的个数

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: positive.asm

positive SEGMENT
ASSUME CS:positive,DS:positive
ORG 100H

Start: jmp Begin

Decimal DW 780,-370,266,48,-127,890,21,640,-1023,513 ; 10个有符号数

Deci_Sum DB ? ;正数的个数计数器

Begin: lea si,Decimal
cld
mov cx,10
mov Deci_Sum,0 ;计数器清零

positive0: lodsw
test ax,8000h
jz NextOne
inc Deci_Sum
NextOne: loop positive0

Exit_Proc: mov ax,4c00h ;结束程序
int 21h

positive ENDS
END Start
-----------------------------------------
5. 编写完整汇编程序,将内存中的5个无符号数从小到大排列

; Program Name: Bubbling.ASM

Bubbling SEGMENT
ASSUME CS:Bubbling,DS:Bubbling,ES:Bubbling
ORG 100H

Start: JMP Begin

Array DB -112,56,72,98,32 ;需要排序的数据
Elem_Num EQU ($-Array)/TYPE Array-1 ;外循环次数

Begin: MOV CX,Elem_Num

Scanning: PUSH CX ;入栈保存外循环次数
LEA SI,Array ;数组首地址装入源变址寄存器

Compare: PUSH SI
POP DI ;当前数组元素地址赋给目的变址寄存器,以备交换之用
LODSB ;将当前数组元素读入累加器
CMP AL,[SI] ;当前数组元素与相邻的下一个数组元素相比较
JBE NextOne ;若小于或等于,不作数据交换,处理下一个数组元素
XCHG AL,[SI] ;若大于,交换数组元素
STOSB ;保存数值较小者
NextOne: LOOP Compare ;处理下一个数组元素

POP CX ;外循环次数出栈
LOOP Scanning ;下一趟比较

Exit_Proc:MOV AX,4C00H ;结束程序
INT 21H

Bubbling ENDS
END Start
-----------------------------------------
6.编写完整汇编语言程序,将内存中一个组合BCD数以十进制显示在屏幕上。

; 下面的程序是16位汇编,以组合BCD码58为例,编译通过,运行正确。

; Program Name: BCD_Code.asm

BCD_Code SEGMENT
ASSUME CS:BCD_Code,DS:BCD_Code
ORG 100H

Start: mov cl,4
mov al,BCD_Str
xor ah,ah
shl ax,cl
shr al,cl
or ax,3030h
xchg ah,al
mov word ptr Dec_Str,ax

lea dx,Dec_Str ;字符串首地址
mov ah,9 ; 显示结果
int 21h

Exit_Proc:mov ax,4c00h ;结束程序
int 21h

BCD_Str db 58h
Dec_Str db ' $'

BCD_Code ENDS
END Start

我只答第一题,其它的太费事了,其实第1题也很费事的,呵呵。
进入debug(下面只给出输入内容,<CR>表示回车,空格不能少,显示的内容自己看吧)
A100<CR>
MOV DX,180<CR>
MOV AH,9<CR>
INT 21<CR>
MOV AH,4C<CR>
INT 21<CR>
<CR>
F180 190 "HELLO!$"<CR>
G=100<CR> 【至此完成了显示,下面再保存】

N "A.ROM"<CR>
RBX<CR>
0<CR>
RCX<CR>
100<CR>
W100<CR>
Q

现在,你可以在dos提示符下直接看到A.ROM了,如果扩展名改成.COM,还可以直接执行的。

第1题应该是写错了。
1.用DEBUG编写程序,在屏幕上显示一个字符串HELLO!,并以A.cOM为文件名存盘,这倒好搞。

A.ROM存盘之后你怎么实现屏幕显示?

建议分开来问。

相关视频

高分悬赏,高手进~~~
1 一根香点两端,一根香点一端;当点两端的香烧完时就是半小时,这时再点燃另一根香的第二端;从烧完第一根香到烧完第二根香的时间就是15分钟。2. 12\\10\\6 12+10+6=28 2+8=10 1+0=1 3 13=1+1+11=1+2+10=1+3+9=1+4+8=1+5+7=1+6+6 =2+2+9=2+3+8=2+4+7=2+5+6 =3+3+7=

高分悬赏一道关于个人理财的C语言程序 望高手帮忙!跪求!!
cout<<"delete all members!"<<endl; } } 丁峻辉 我给我们C语言老师QQ你: 735729489~~ 至于你问不问得到答案我就不知道了。。。我尽力了~ LOSONGCHAO666 老师说主要实现思路是:个人信息用结构定义,解决的方案可以用结构体数组,或是链表作为临时数据处理 用文件夹存储数据...

高分悬赏!关于C语言如何进阶学习
关于C语言本身:现在已经掌握了基础,可以学习一下C Primer这种外国人写的书,里面讲的会更深刻。进行其他语言的学习:比如C++,是一种以C为基础,但增加了面向对象等其他编程特性的语言,也更加常用;Python等脚本式的语言有着不同于C的有趣之处,也是可以学习的。面向应用的学习:学习语言的目的是编程...

翻译英语.高分悬赏英语高手进.
Monday, "If you want to sing the song sing-biao"Old one, a mood, a glass of wine, a classic piece of memory fragments of life.(Of course, King song selection, they will receive the value of X-Bar drinks 200 to join the Championship on and have access to 1,000 yuan ...

高分悬赏,请英语翻译高手进来!(翻译下面的文章)
Shortcoming: 1) will clone reduces the hereditary change, will produce the individual through the clone to have the similar heredity gene, the similar disease sensitivity, one kind of disease might destroy entire the community which will produce by the clone. May conceive, if a ...

高分悬赏,请高手帮忙翻译成英语,要求准确,急急!
1.咱俩谁跟谁啊 Not a big deal,we're friends.2.怎么是你,怎么老是你?You! You again!3.你不鸟我,我也不鸟你 If you ignore me, I will do that to you too.4.你有种,我要给你点颜色瞧瞧,兄弟们,一起上 How dare you! I have to teach you a lesson. Fellows, attack ...