注册 登录
编程论坛 汇编论坛

想问一下在调试过程中这些语句的具体含义。

张珂珂 发布于 2021-11-03 00:46, 6614 次点击
题目:{y=0 x=0;y=x+1 0<x<=10;y=x-1 10<x<=16}

程序:
程序代码:
DATAS SEGMENT
    ;此处输入数据段代码  
    X DW 16;定义X
    Y DW ?
DATAS ENDS

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

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    MOV AX,X
   
    CMP AX,0; 判断〉0
    JGE LP0;>=0
   
LP0:CMP AX,0 ;判断<=0 如果小于等于0且大于等于0,即=0
    JLE LP4
    CMP AX,10;判断AX 10
    JG LP1;〉10
    JMP LP3
LP3:
    ADD AX,1 ;X<=10 Y=X+1
    JMP out1
LP4:
    MOV AX,0
    JMP out1

LP1:CMP AX,16;判断
    JLE LP2; <=16
LP2:SUB AX,1;Y=X-1
    JMP out1

out1:MOV Y,AX


    MOV AH,4CH
    INT 21H
CODES ENDS
    END START



问题:
调试结果1
只有本站会员才能查看附件,请 登录

想问一下AX=0770 0770是AX的地址吗?
MOV DS,AX 的意思是将AX的段基址存入DS寄存器?
MOV AX,[0000]的意思是给AX一个偏移地址[0000]吗?
DS:0000=0010的意思是这条语句具体意思是什么呢?大概知道是赋值,具体的含义不太懂。
调试结果2
只有本站会员才能查看附件,请 登录

这里JGE 000D是什么意思呢? 我了解这一句的意思应该是判断大于,然后跳转,但是为什么是000D呢
9 回复
#2
张珂珂2021-11-03 00:47
运行用的是masm
#3
自由而无用2021-11-03 07:04
null

[此贴子已经被作者于2021-11-4 17:28编辑过]

#4
自由而无用2021-11-03 11:03
null

[此贴子已经被作者于2021-11-4 17:28编辑过]

#5
自由而无用2021-11-03 12:58
null

[此贴子已经被作者于2021-11-4 17:28编辑过]

#6
张珂珂2021-11-03 23:54
回复 3楼 自由而无用
非常感谢!对我很有用我试着又调试了几个程序,现在看语句比之前容易啦
#7
张珂珂2021-11-03 23:55
回复 5楼 自由而无用
谢谢!我会试一试
#8
自由而无用2021-11-04 09:50
回复 6楼 张珂珂
null

[此贴子已经被作者于2021-11-4 17:27编辑过]

#9
自由而无用2021-11-04 13:22
very sad to say sorry that I have to leave, I respect everything, and nothing to say, thank you, I will miss you, duck duck~~
#10
Valenciax2021-11-19 05:52
楼主贴出的代码其实不合格,按题目要求0<=x<=16,y才需要给值,若x<0或>16,y应该不能定义
1